Python中-如何不重复地生成随机数
我有几行生成随机数的代码,如何停止生成重复数Python中-如何不重复地生成随机数,python,python-3.x,Python,Python 3.x,我有几行生成随机数的代码,如何停止生成重复数 import random num = random.randrange(0,1000) x = 13 while num != x : num = random.randrange(0 , 14) print(num) 存储生成的号码,并对照此列表检查每个新号码 随着要检查的列表越来越长,性能不会很好,但至少不会有重复项 另一种方法是从1..n生成一个数字列表,将数字洗牌,然后迭代该列表以获得下一个唯一的随机数 >&g
import random
num = random.randrange(0,1000)
x = 13
while num != x :
num = random.randrange(0 , 14)
print(num)
存储生成的号码,并对照此列表检查每个新号码 随着要检查的列表越来越长,性能不会很好,但至少不会有重复项 另一种方法是从1..n生成一个数字列表,将数字洗牌,然后迭代该列表以获得下一个唯一的随机数
>>> import random
>>> l = list(range(4))
>>> random.shuffle(l)
>>> l
[3, 2, 4, 1]
存储生成的号码,并对照此列表检查每个新号码 随着要检查的列表越来越长,性能不会很好,但至少不会有重复项 另一种方法是从1..n生成一个数字列表,将数字洗牌,然后迭代该列表以获得下一个唯一的随机数
>>> import random
>>> l = list(range(4))
>>> random.shuffle(l)
>>> l
[3, 2, 4, 1]
如果每个数字只能拾取一次,则这与对列表进行随机排序并一次拾取一个数字相同
import random
desired_number = 13
guesses = range(0,14)
random.shuffle(guesses)
current_guess = None
while current_guess != desired_number:
current_guess = guesses.pop()
print(current_guess)
如果每个数字只能拾取一次,则这与对列表进行随机排序并一次拾取一个数字相同
import random
desired_number = 13
guesses = range(0,14)
random.shuffle(guesses)
current_guess = None
while current_guess != desired_number:
current_guess = guesses.pop()
print(current_guess)
或者作为字典,数字作为键,无作为值。然后,如果您想查找一个新生成的数字,您所要做的就是查看:new_number indict@Ben:那是一套。@quamrana好极了!我太习惯于使用dicts了,以至于我完全忘记了set。在这里,集合是更好的方法。或者作为字典,数字作为键,无作为值。然后,如果您想查找一个新生成的数字,您所要做的就是查看:new_number indict@Ben:那是一套。@quamrana好极了!我太习惯于使用dicts了,以至于我完全忘记了set。在这里,集合是更好的方法。使用集合存储数字。如果可以使用
numpy
:numbers=numpy.random.choice(范围(1000),但是如果需要许多数字,则替换为False)
使用集合存储数字。如果可以使用numpy
:numbers=numpy.random.choice(范围(1000),但是\u许多\u数字\u您想要的,replace=False)