全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
楼主: 你说的都对

求助Python大佬!

[复制链接]
发表于 2020-5-13 15:09:42 | 显示全部楼层
生成一个就写一个……
不要全部生成了再写……
不然内存会爆炸
 楼主| 发表于 2020-5-13 15:44:52 | 显示全部楼层

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

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

suz.zip

329 Bytes, 下载次数: 18

 楼主| 发表于 2020-5-13 15:47:33 | 显示全部楼层
Kimiato 发表于 2020-5-13 15:46
试试这样写??
我也不知道这样查重并随机生成9千万个不同的随机数需要处理多少时间
试着跑了一下似乎没有 ...

谢谢大佬!有心了!
发表于 2020-5-13 17:01:54 | 显示全部楼层
我用python试了下,有点慢,所以用C写了个模块,第一次用python调用C

random.zip

490.66 KB, 下载次数: 3

发表于 2020-5-13 17:21:14 | 显示全部楼层
用C++写,C语言的标准输出?
弄个[1,n]的数组,然后直接random_shuffle一下就不需要判断重复了
下面这个跑[1,10^8]也很快,输出文件不到1G
#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
    srand(19260817);
    const int n = 100000000;
    static int s[n + 5];
    for(int i = 1; i <= n; i++)
        s[i] = i;
    FILE *f = fopen("name", "w");
    random_shuffle(&s[1], &s[n + 1]);
    for(int i = 1; i <= n; ++i)
        fprintf(f, "%d\n", s[i]);
    fclose(f);
}
发表于 2020-5-13 17:38:14 | 显示全部楼层
zhuohao 发表于 2020-5-13 17:21
用C++写,C语言的标准输出?
弄个[1,n]的数组,然后直接random_shuffle一下就不需要判断重复了
下面这个跑[ ...

random_shuffle默认使用的随机数生成器是自带的rand,c rand不是很适合10^8这个数据量(主要是在win下面)
发表于 2020-5-13 17:45:55 来自手机 | 显示全部楼层
gougou6423 发表于 2020-5-13 17:38
random_shuffle默认使用的随机数生成器是自带的rand,c rand不是很适合10^8这个数据量(主要是在win下面 ...

也可以使用c++的mt19937和uniform_int_distribution,指定随机交换元素次数,每次随机swap两个位置吧。
发表于 2020-5-13 17:47:02 | 显示全部楼层
我安装的竟然是尼玛32位的Python 哈哈哈
发表于 2020-5-13 17:49:26 | 显示全部楼层
电脑渣了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-8 09:38 , Processed in 0.093148 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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