我想要不同的数字。我正在写一个小数字,例如(10)在范围内它没有问题,但如果我写一个大数字它不能工作。
import random
arr=[]
for i in range(25):
a=random.randint(1,30)
if a in arr:
b=random.randint(1,30)
arr.append(b)
if a not in arr:
arr.append(a)
arr.sort()
print(arr[0:])
答案 0 :(得分:1)
嗯,对于彩票样本,你应该使用Fisher-Yates shuffle,这已经在random.shuffle
函数中实现了。它是O(n)而不是你正在使用的O(n 2 )算法。
答案 1 :(得分:0)
你的方法的问题是,如果a在arr中,它会附加另一个随机数b,它可能与a相同。
我会使用以下方法:
random.sample(xrange(1,30), 25)
如果你真的想要一个循环,那么它应该是这样的:
arr=[]
for i in range(25):
a=random.randint(1,30)
while a in arr:
a=random.randint(1,30)
arr.append(a)
arr.sort()
print(arr[0:])