我想生成 100k 个随机数,这是我想出的:
from random import randrange, seed
f=open("tree.in","w")
s=set()
seed(99)
for _ in xrange(1,10**5):
while True:
x=randrange(10**6)
if x not in s:
s.add(x)
break
for x in s:
f.write(str(x)+"\n")
f.close()
不幸的是,文件中的数字是这样聚集的:
524369
524372
786520
786523
786526
98
524387
106
108
111
786544
786549
我可以将它们添加到列表中并进行随机排序,但这会浪费空间。
有什么优雅的方法可以解决这个问题吗?
(我不确定cygwin是否与此问题有关)
请您参考如下方法:
我建议使用 random.sample为此:
>>> import random
>>> s = random.sample(xrange(1, 10 ** 6), 10 ** 5)
