algorithm - 随机数列表

标签 algorithm

我需要生成一个数字列表(大约 120 个)。数字范围从 1 到 X(最多 10),两者都包括在内。该算法应该使用每个数字相同的次数,或者至少尝试,如果一些数字使用次数较少,那没关系。

这是我第一次必须制作这种算法,我曾经创建过非常简单的算法,但我对如何执行此操作感到困惑。我首先尝试使用谷歌搜索,但我真的不知道如何称呼这种算法,所以我找不到任何东西。

非常感谢!

最佳答案

听起来您想要做的是首先用您想要的数字填充一个列表,然后打乱该列表。一种方法是将您的每个号码添加到列表中,然后重复该过程,直到列表中的项目数量达到您想要的数量。之后,随机打乱列表。

在伪代码中,生成初始列表可能看起来像这样:

list = []
while length(list) < N
    for i in 1, 2, ..., X
        if length(list) >= N
            break
        end if
        list.append(i)
    end for
end while

我将洗牌部分留给读者作为练习。

编辑: 正如评论中指出的那样,上面的数字总是比大数字多。如果这不是您想要的,您可以以随机顺序遍历可能的数字。例如:

list = []
numbers = shuffle( [1, 2, ..., X] )
while length(list) < N
    for i in 1, 2, ..., X
        if length(list) >= N
            break
        end if
        list.append( numbers[i] )
    end for
end while

我认为这应该消除这种偏见。

关于algorithm - 随机数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21487063/

相关文章:

algorithm - Bron-Kerbosch 算法的迭代版本?

c - 查找重复字符串的高效搜索算法

algorithm - 哪种共识算法本质上是同步的?

javascript - 计算限制另一个并保持纵横比的最小旋转矩形

linux - 添加到无锁列表的尾部

algorithm - 使用动态规划的游乐园调度游乐设施

algorithm - 字符串到唯一的 int 算法

algorithm - 减少分拣网络

c++ - 在大型字符串数据库中高效地搜索部分匹配

algorithm - 是否可以将所有递归函数重写为尾递归?