我试图在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,但有些随机跟踪以前生成的数字,我最终得到了值错误。
答案 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