Python random.randint()在一定时间后保持返回0

时间:2017-07-30 07:06:31

标签: python random

我试图在python中获得范围内的3个随机数而无需替换。我这样做了

rand_lst = []

while(True):
    rand = random.randint(0, length-1 )
    if(len(rand_lst) == 3):
         break
    if(rand not in rand_lst):
         rand_lst.append(rand)

此代码位于for循环中。这仅返回0,因此是无限循环。我也试过numpy.random.randint,但有些随机跟踪以前生成的数字,我最终得到了值错误。

3 个答案:

答案 0 :(得分:2)

尝试将print(length)放在while True之前。你几乎肯定会发现length的价值不是你所期望的那样。 (它可能是0或1,当你希望它至少为3时。)

答案 1 :(得分:0)

如果我理解正确的话, 你想要这样的东西:

import random
rand_lst = []
length = 10

while(True):
    rand = random.randint(0, length-1 )
    if(len(rand_lst) == 3):
         break
    if(rand not in rand_lst):
         rand_lst.append(rand)
print(rand_lst)

这种方式"长度"有一个值,不会抛出错误

答案 2 :(得分:0)

说明:https://stackoverflow.com/a/33806926/8386640

使用random.sample。这是代码。

import random

rand_lst = []
length = 3

while(len(rand_lst) < 3):
    rand_lst.append(random.sample(range(length), 3))
print rand_lst