【问题标题】:how to not repeat randint value [duplicate]如何不重复随机值[重复]
【发布时间】:2015-01-20 03:11:32
【问题描述】:

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

【问题讨论】:

  • 所以一旦你选择了一个随机数,你想确保这个随机数不会再次被选中?
  • “不重复随机值”是什么意思?
  • 是的,你知道@rayryeng​​span>
  • 我不想重复'ran'变量@BrenBarn

标签: python random


【解决方案1】:

最简单的可能是:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      相关资源
      最近更新 更多