python - 随机化数字时如何防止重复?

标签 python algorithm

<分区>

from random import randint
def random_number():
    return randint (1,10)

rn1 = random_number()

rn2 = random_number()
while rn2 == rn1:

    rn2 = random_number()

rn3 = random_number()
while rn3 == rn1 or rn3 == rn2:

    rn3 = random_number() 

rn4 = random_number()
while rn4 == rn1 or rn4 == rn2 or rn4 == rn3: 

    rn4 = random_number()

rn5 = random_number()
while rn5 == rn1 or rn5 == rn2 or rn5 == rn3 or rn5 == rn4: 

    rn5 = random_number()

我已经为这段小代码苦苦挣扎了一段时间。我试图让程序随机生成 5 个数字。问题是程序可能会生成相同的数字两次。我正在尝试确保使用算法生成的 5 个数字中没有重复数字。但是,代码仍然打印重复项。知道我做错了什么吗??

最佳答案

我认为最简单的方法是使用 random.sample :

import random

numbers = random.sample(range(1, 11), 5)

这确实是无需替换的采样,这似乎是您想要的。

请注意 random.sample(pop, k)选择大小为 k 的样本来自人群pop (列表或其他),以及 range(a, b) 的范围是a <= x < b , 而 randint 的边界是a <= x <= b - 所以你需要在 range 的末尾加 1打电话。

关于python - 随机化数字时如何防止重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41616374/

相关文章:

algorithm - Dijkstra算法会陷入死胡同吗?

python - 汇总矩阵中的每个列值

arrays - 使用优先队列合并 K 排序列表

python - Dash Python html 中的“子项”属性

python - scipy 和 matlab 谱图之间的差异

algorithm - 如何以最节省空间的方式选择 DVD 的内容?

在主字符串中查找最小长度以查找第二个字符串的算法

algorithm - 比较并交换符合 POSIX 标准的文件系统对象

python - 如何在 np 数组中随机选择一个元素(仅当它不是某个值时)

python - Django:在管理界面中伪造一个字段?