Skip to main content
 首页 » 编程设计

python之集合中的随机数是聚集的

2024年08月28日41lyhabc

我想生成 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)