如何不重复randint值

时间:2015-01-20 03:11:33

标签: python random

我刚刚编写了一个代码来生成随机数并尝试将其与随机数匹配,但我不知道如何不重复randint值,有人可以帮助我吗?

from random import randint
import time

first_time = time.ctime()
print  first_time

x = randint(1, 10000)
while x != randint(1, 10000):
    ran = randint(1, 10000)
    print ran
    x = ran

print 'You number is: ', x
print ('You stared at: '+first_time)
print ('You finished at: '+time.ctime())  
print('Finish')

2 个答案:

答案 0 :(得分:3)

最简单的可能是:

deck = list(range(1, 10001))
random.shuffle(deck)

并使用deck.pop()获取下一个“randint而不重复”。

这就是你如何在没有重复的情况下获得一张随机卡(确实是random.shuffle的名字,以及为什么我调用变量deck :-):你从甲板上的所有卡片,一次洗牌(当然彻底! - ),然后每次只从牌组顶部处理最后一张牌,而不是将其放回牌组中。

答案 1 :(得分:0)

如果你不想维护一个任意长度的列表(例如,如果你想要在该范围内有几百个独特的随机整数(0..a gazillion)),那么重复Alex的解决方案,那么你必须维护一个已经选择的数字列表:

numbers = set()
while len(numbers) < enough:  # enough is defined somewhere...
  numbers.add (random.randint(0, upper_limit))