| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2047 人关注过本帖
标题:如何提高程序运行速
只看楼主 加入收藏
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
假设随机数的产生是均匀的,那么600以内的随机数产生概率是1/1001。也就是大约600个,有时会多些,有时会少些。你把每次的结果统计出来是要研究个什么?如果做成动画,反应星系演化状况那还有看头(纯属个人想法)。
2016-08-30 11:58
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:3 
(int)((double)(rand()/(double)RAND_MAX*0.6006)*1000000);    //随机数范围在600600.
能帮你的就只能是随机数这里
2016-08-30 11:58
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
不管你写什么样的代码。
想要提高程序运行速率的最好办法就是不运行,少运行。对于那些个干扰因子,我觉得你真的没必要把它们分配到桶里。

我们不妨模拟现实操作来写程序:
用600个目标因子.60000个干扰因子。200个桶。
首先从目标因子和干扰因子中随机抽取一个,如果是干扰因子,丢掉这个干扰因子(他在哪个桶不重要!重要的是它干扰了目标因子可能随机到的数);{否则就随意把它丢入200中任意一个(需要第二次随机)。
然后判断还有没有目标因子,如果没有目标因子了,那么结束循环输出结果//这里解释一下,因为600:60000的比例比较大,所以我感觉这里加个判断应该不吃亏。这个判断在整个程序中只需要运行600次就能提前结束程序!}
不管上次程序运行的时候我们抽出的是干扰因子还是目标因子此刻都应该更新他们两者的比例


φ(゜▽゜*)♪
2016-08-30 13:18
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
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
回复 14楼 zhou31146001
我说错了


[此贴子已经被作者于2016-8-31 08:09编辑过]

2016-08-30 18:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:7 
回复 14楼 zhou31146001
扩大范围的公式是: rand()*(RAND_MAX+1) + rand()
2016-08-31 08:10
快速回复:如何提高程序运行速
数据加载中...
 
   



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

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