| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2012 人关注过本帖
标题:如何提高程序运行速
取消只看楼主 加入收藏
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
结帖率:93.94%
收藏
已结贴  问题点数:10 回复次数:4 
如何提高程序运行速
下面的程序生成文件时间或运行总时间超过8个小时,请问各位大侠,程序怎样改进,才能计算更快,十几分钟完成?
谢谢!!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define AMOUNT 1201200000
int main()
{
FILE * fpnum=fopen("E:\\suijishu-101000.txt","wt");
srand((unsigned)time(NULL));    //每产生1000个随机数后,重设随机数种子
int num=0;
int i;
for(i=0;i<AMOUNT;i++)
{
 
  num=rand()%6006000;    //"%"后数字是x,就随机生成0到x之间任意数
  fprintf(fpnum,"%d\n",num);    //使用换行符,不知为何使用制表符时在读取比较易出问题
}
fclose(fpnum);
}
2016-08-29 16:22
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 2楼 ehszt
    您好,大侠!
    我目前在做一个模拟,内容如下:存在200个洞,600个目标粒子,600000个干扰粒子,目标粒子与干扰粒子混合在一起,想探讨600600个粒子随机散下去之后600个目标粒子在200个洞内的分布情况。
    我的想法是:生成600600个介于0到600600之间的随机数,统计600600个随机数内小于600的随机数个数,除以3就代表600个目标粒子在200个洞内的分布情况了。将上述步骤重复2000次,这样就能得到2000个分布结果,从而做分布情况的统计分析。

2016-08-29 17:23
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
各位大侠,经检查,rand()%600600生成的随机数最高是5位数,也就是生成不了6位及6位以上的随机数,请问这是为什么?
谢谢!!
2016-08-30 08:54
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
    各位大侠好!
    各位想,假设每次只生成100个0-99之间的随机数,肯定每次生成的结果都是不一样的!
    如果生成200个0-200之间的随机数,那么0-99之间的随机数统计情况肯定每一次也是不一样的!
    如果生成600600个0-600600之间的随机数,那么0-599之间的随机数的统计情况肯定每次统计也会不同,而且必然受到600及以上随机数的影响!
    我的想法正是基于上述想法进行的。
2016-08-30 11:25
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
回复 12楼 linlulu001
  您好,大侠!
  虽然能够生成0-600600之间的随机数字了,但无论生成多少个随机数(随机数总数已远大于600600),非重复随机数的总数仍旧只有32767个,而不能0-600600之间的任一个随机数都能生成。
  请问,这要怎么办,我希望的结果是0-600600之间的任一个数都可以随机生成,也就是当随机数总数无穷大时,0-600600之间的任一个数都能出现!!
  谢谢!!
2016-08-30 17:49
快速回复:如何提高程序运行速
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015875 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved