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