| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2406 人关注过本帖
标题:[讨论]随机问题
只看楼主 加入收藏
Tainform
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-9-26
收藏
得分:0 
在说一遍我的问题,比如说:在一次srand(time(NULL))之前,random(9)产生的随即序列是2,1,5,8,6.......在下一次循环时,由于速度太快srand(time(NULL))的值与上次是同样的,所以random(9)的随即序列也是2,1,5,8,6.....我的问题是如何改进?
2004-10-04 22:09
knocker的马甲
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2004-10-4
收藏
得分:0 

很简单!你的srand(time(NULL));放到for()之前,放在for之内本身就没意义,浪费资源!


鄙视live41中............
2004-10-04 22:53
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
以下是引用knocker的马甲在2004-10-04 22:53:10的发言:

很简单!你的srand(time(NULL));放到for()之前,放在for之内本身就没意义,浪费资源!

哪来的一头蠢驴?

2004-10-04 22:59
knocker的马甲
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2004-10-4
收藏
得分:0 
以下是引用live41在2004-10-04 22:59:31的发言:

哪来的一头蠢驴?

我高兴,你管得着吗?


鄙视live41中............
2004-10-04 23:22
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

see this link.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecrt/htm/_wcecrt_rand.asp

if you want get a number between 0 and 9, then : rand() % 10;

if you want get a number between 1 and 9, then : rand() % 9 + 1;


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-10-04 23:39
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
thanks to kai
2004-10-05 01:42
Tainform
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-9-26
收藏
得分:0 
首先,请用中文交流
2004-10-05 09:39
Tainform
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-9-26
收藏
得分:0 

其次,就算把srand(time(NULL))放在for之前,如果在一秒内for就已经循环完了呢,这时再次进行循环时srand(time(NULL))的值也和上一次一样啊。

LOOP:srand(time(NULL));

for(i=0;i<100;i++){

random(9);

}

goto LOOP;

现在再慢的机器在一秒内也可以把这个for运算完吧。

而且,在有些情况下srand(time(NULL))是需要放在for里面的。

[此贴子已经被作者于2004-10-05 09:47:25编辑过]

2004-10-05 09:46
Tainform
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-9-26
收藏
得分:0 
还有,现在的随机值的产生大都要依赖提取时间,有没有不用时间,或者不用设定随机种子而使每次程序运行时产生的随机值都不一样呢?3q.
2004-10-05 09:53
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用Tainform在2004-10-05 09:46:11的发言:

其次,就算把srand(time(NULL))放在for之前,如果在一秒内for就已经循环完了呢,这时再次进行循环时srand(time(NULL))的值也和上一次一样啊。

LOOP:srand(time(NULL));

for(i=0;i<100;i++){

random(9);

}

goto LOOP;

现在再慢的机器在一秒内也可以把这个for运算完吧。

而且,在有些情况下srand(time(NULL))是需要放在for里面的。

想不骂人都不行了,你S啊!

srand(time(NULL));用调一次就行了,你跟你的CPU有什么过节吗?干什么老是和它过不去?

还goto.............

我也懒打字了,去google,看看随机数是个什么玩意,srand()起个什么作用。


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-10-05 12:39
快速回复:[讨论]随机问题
数据加载中...
 
   



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

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