加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 避免从随机生成重复值

发布时间:2020-12-20 12:01:59 所属栏目:Python 来源:网络整理
导读:我想生成随机数并将它们存储在列表中,如下所示: alist = [random.randint(0,2 ** mypower - 1) for _ in range(total)] 我关注的是:我想在(0,2 ** mypower – 1)范围内生成总计= 4000万的值.如果mypower = 64,则alist的大小约为20GB(40M * 64 * 8),这对我
我想生成随机数并将它们存储在列表中,如下所示:

alist = [random.randint(0,2 ** mypower - 1) for _ in range(total)]

我关注的是:我想在(0,2 ** mypower – 1)范围内生成总计= 4000万的值.如果mypower = 64,则alist的大小约为20GB(40M * 64 * 8),这对我的笔记本电脑内存来说非常大.我有一个想法,迭代生成一大块值,一次说500万,并将它们保存到一个文件,这样我就不必一次生成所有40M值.我担心的是,如果我在循环中执行此操作,则可以保证random.randint(0,2 ** mypower – 1)不会生成已经从上一次迭代生成的值吗?像这样的东西:

for i in range(num_of_chunks):
            alist = [random.randint(0,2 ** mypower - 1) for _ in range(chunk)]
            # save to file

解决方法

好吧,既然效率/速度无关紧要,我认为这样可行:

s = set()
while len(s) < total:
    s.add(random.randint(0,2 ** mypower - 1))
alist = list(s)

由于集合中只能包含唯一元素,我认为这样可以很好地工作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读