Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中-如何不重复地生成随机数_Python_Python 3.x - Fatal编程技术网

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)