我需要生成一个数字列表(大约 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/