You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现0到x(Exclusive)无重复全元素随机序列的方法

生成0到x(Exclusive)的无重复随机全序列方案

这本质是生成0到x-1的随机排列数组,可以通过经典的Fisher-Yates洗牌算法高效实现,该算法能保证每个元素的随机分布公平性,且完美满足「包含所有数字、无重复」的要求。

Python 实现

import random

def generate_random_sequence(x):
    sequence = list(range(x))
    # Fisher-Yates 洗牌:从后往前交换随机位置元素
    for i in range(len(sequence)-1, 0, -1):
        j = random.randint(0, i)
        sequence[i], sequence[j] = sequence[j], sequence[i]
    return sequence

# 示例调用:生成0~4的随机序列(对应x=5)
print(generate_random_sequence(5))

JavaScript 实现

function generateRandomSequence(x) {
    const sequence = Array.from({length: x}, (_, idx) => idx);
    // Fisher-Yates 洗牌
    for (let i = sequence.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [sequence[i], sequence[j]] = [sequence[j], sequence[i]];
    }
    return sequence;
}

// 示例调用:生成0~4的随机序列(对应x=5)
console.log(generateRandomSequence(5));

算法说明

Fisher-Yates洗牌的核心逻辑是从数组末尾开始,每次随机选取一个当前位置及之前的索引,交换两个位置的元素。这种方式能确保每个元素出现在任意位置的概率均等,时间复杂度为O(x),空间复杂度为O(x),完全适配需求场景。

内容的提问来源于stack exchange,提问作者Ymi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:59:54