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