我知道有一些类似的问题,但它们都只是返回一个列表,我只需要一个数字,每次随机生成一个唯一的单个数字:
现在我正在使用 Python 构建循环:
for _ in range(9):
random_number=random.randint(1,11)
print(random_number)
我的问题是如何确保每次 random_number 都是唯一的,而不是在所有 9 次中重复。 我不需要列表,只需要 random_number
您可以在目标号码范围上使用
random.sample
从其中选择所需数量的唯一号码:
import random
for random_number in random.sample(range(1, 12), 9):
print(random_number)
如果您希望每个数字都与其他数字不同,那么您不希望每次都有一个真正的随机数(事实上,小集合中的随机数不太可能是唯一的)。 我会这样做:
numbers = list(range(1, 12))
random.shuffle(numbers)
for random_number in numbers[:9]:
print(random_number)
本质上,这就像拿一副牌,将其洗牌,然后发出最上面的九张牌。 你会得到九张“随机”牌,但它们永远不会重复,因为它们来自同一副牌,并且你不会在交易之间重新洗牌(因此它们不是真正随机的,这就是为什么算牌是一件事).
random.sample
绝对是可行的方法,但另一个想法是初始化列表中的所有数字,然后一次随机弹出一个:
import random
numbers = list(range(1, 12))
for _ in range(9):
random_index = random.randint(0, len(numbers)-1)
selected_rn = numbers.pop(random_index)
这有一个很好的解释:一个预定义的数字序列,您可以多次指向它并随机抓取一个数字。
每次运行代码时,都会使用 numpy 生成一个随机数
import numpy as np
np.random.sample(1)[0]
其他应用程序可以轻松添加到任何上下文中。例如,当定义范围时:
import numpy as np
each_time_new_random_number = np.random.sample(1)[0]
start = 5
stop = 16
start + (stop-start)*each_time_new_random_number
顺风助你扬帆。