设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 181|回复: 27

求助Python大佬!

[复制链接]

4

主题

71

回帖

194

积分

注册会员

积分
194
发表于 2020-5-13 14:22:07 | 显示全部楼层 |阅读模式
本帖最后由 你说的都对 于 2020-5-13 14:44 编辑

小弟想得到9千万以内所有的数字并随机写入一个txt中。
[ol]
  • import random
  • f = open('C:\\Users\Administrator\Desktop\python\wd.txt', 'w')
  • for x in random.sample(range(0, 90000000), 90000000):
  •         x = x+1
  •         f.write(str(x)+'\n')
  • f.close()[/ol]复制代码
    这样运行后,报错了
    [ol]
  • Traceback (most recent call last):
  •   File "C:\Users\Administrator\Desktop\python\sx.py", line 3, in
  •     for x in random.sample(range(0, 86583357), 86583357):
  •   File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\random.py", line 370, in sample
  •     pool = list(population)
  • MemoryError[/ol]复制代码
    不懂英语,估计是内存不够吧。
    请问怎么写能把1-90000000的不重复随机数写入一个txt啊
    ---------------------------我擦我知道原因了,我安装的竟然是尼玛32位的Python------------------------------
  • 回复

    使用道具 举报

    9

    主题

    14

    回帖

    71

    积分

    注册会员

    积分
    71
    发表于 2020-5-13 14:45:20 | 显示全部楼层
    1.内存越界了,用这个模块不行的
    2. python 中, for 循环执行效率非常差


    解决方法:调用
    numpy random模块中的choice方法

    需要置replace为False,使抽取的元素不能重复:


    np.random.choice(90000000, 90000000,replace=false)

    回复

    使用道具 举报

    5

    主题

    77

    回帖

    209

    积分

    中级会员

    积分
    209
    发表于 2020-5-13 15:46:16 | 显示全部楼层
    试试这样写??
    我也不知道这样查重并随机生成9千万个不同的随机数需要处理多少时间
    试着跑了一下似乎没有问题,但是不知道要跑多久才能生成出来



    不知道为啥没法提交代码,只好用文件形式提交了
    回复

    使用道具 举报

    96

    主题

    441

    回帖

    1206

    积分

    金牌会员

    积分
    1206
    发表于 2020-5-13 14:39:34 | 显示全部楼层
    http://www.99cankao.com/numbers/random-number-generator.php

    回复

    使用道具 举报

    16

    主题

    1652

    回帖

    3490

    积分

    论坛元老

    积分
    3490
    发表于 2020-5-13 14:23:30 | 显示全部楼层
    你先全部存为一个str,再一次性写入文件里啊
    回复

    使用道具 举报

    3

    主题

    53

    回帖

    139

    积分

    注册会员

    积分
    139
    发表于 2020-5-13 14:26:10 | 显示全部楼层
    这样会重复吧
    回复

    使用道具 举报

    4

    主题

    71

    回帖

    194

    积分

    注册会员

    积分
    194
     楼主| 发表于 2020-5-13 14:32:00 | 显示全部楼层

    冻猫 发表于 2020-5-13 14:26

    你先全部存为一个str,再一次性写入文件里啊

    不行啊,刚试了,依旧内存出错
    回复

    使用道具 举报

    4

    主题

    71

    回帖

    194

    积分

    注册会员

    积分
    194
     楼主| 发表于 2020-5-13 14:34:58 | 显示全部楼层

    Sakurasou 发表于 2020-5-13 14:32

    这样会重复吧

    不会啊
    回复

    使用道具 举报

    9

    主题

    344

    回帖

    775

    积分

    高级会员

    积分
    775
    发表于 2020-5-13 14:26:00 | 显示全部楼层

    mubaizi 发表于 2020-5-13 14:36

    我试了一下 内存没出错 cpu风扇狂叫 还是等大佬解决吧

    你内存大吧,我8G小内存,估计撑不住
    回复

    使用道具 举报

    4

    主题

    71

    回帖

    194

    积分

    注册会员

    积分
    194
     楼主| 发表于 2020-5-13 14:36:43 | 显示全部楼层
    不懂,不会,可以帮顶。
    先得到9千万个随机数到一个列表中?你这样for每次都要生成9kw个
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2026-4-2 16:53 , Processed in 0.015721 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表