如何不重复 randint 值

how to not repeat randint value

我刚刚写了一个代码来生成随机数,并尝试将其与随机数匹配,但我不知道如何不重复 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')

最简单的可能是:

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

并使用deck.pop()得到下一个“randint没有重复”。

这几乎就是你如何从一副牌中获得一张没有重复的随机牌(这确实是 random.shuffle 的名字所暗示的,也是为什么我称变量为 deck:-):你从牌组中的所有牌开始,洗牌一次(当然是彻底洗牌!-),然后每次只从牌组顶部处理最后一张牌,而不将其放回牌组。

借鉴 Alex 的解决方案,如果您不想维护任意长度的列表(例如,如果您想要范围 (0..a gazillion) 中的几百个唯一随机整数,那么您可以改为必须维护已选择的号码列表:

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