在Python中 - 如何生成随机数而不重复

时间:2017-09-22 18:26:04

标签: python python-3.x

我有几行代码生成随机数,如何停止生成重复数字?

import random
num = random.randrange(0,1000)
x = 13


while num != x :
    num = random.randrange(0 , 14)

    print(num)

2 个答案:

答案 0 :(得分:2)

如果您只能选择一次,则这与随机排序列表并一次挑选一个数字相同

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)

答案 1 :(得分:1)

存储生成的数字,并针对每个新号码检查此列表。

由于要检查的列表变得更长,性能不会很好,但至少你不会有重复。

另一种方法是从1..n生成一个数字列表,对数字进行洗牌,然后迭代列表以获得下一个唯一的随机数。

>>> import random
>>> l = list(range(4))
>>> random.shuffle(l)
>>> l
[3, 2, 4, 1]