注册 登录
编程论坛 C++教室

C++从1-100里随机选一个数字问题?

suckdog 发布于 2010-04-09 05:23, 4206 次点击
rt, 这个程序应该是从1-100里选出一个数字, 可是我测试多次后发现每次电脑随机选出来的数字不是39就是42, 再没有第三个数字出现过, 怎么回事呢?

srand(clock());
num = rand()%100 + 1;

[ 本帖最后由 suckdog 于 2010-4-9 05:37 编辑 ]
11 回复
#2
hahayezhe2010-04-09 08:39
种子!!!!!!!!!
#3
suckdog2010-04-09 09:48
请详细解释一下,不太懂种子是什么
#4
yyblackyy2010-04-09 11:27
就是置伪随机数种子啦~~~
#5
suckdog2010-04-09 12:54
请写出来看看, 我初学, 还不太懂
#6
玩出来的代码2010-04-09 12:57
srand((unsigned)time(NULL));
#7
kspliusa2010-04-09 13:29
注意不要把 srand((unsigned)time(NULL)) 放在循环内!
#8
one_june2010-04-09 20:20
我也不懂?
哪位能给出完整代码?
谢谢了...
#9
cage2010-04-09 21:14
如果是我也会这样写,是不是你这句代码之前的程序哪里有点不对!
#10
lingyunhappy2010-04-10 12:21
最好把所有的程序拿出来一起看更清楚一些
#11
阿邋2010-04-10 12:58
#include <ctime>  

//指定seed为当前系统流逝了的时间(单位为秒):time_t time(0):  

srand((unsigned)time(0)); //或者srand(time(NULL));

for(int i=0;i<10;i++){  

ran_num=rand() % 100+1;  

cout<<ran_num<<" ";  
}  

这样随机出来的数就不会一样了

要使rand()在每次程序运行时产生的值都不一样,必须给srand(seed)中的seed一个变值,这个变值必须在每次程序运

行时都不一样。

你调用的是clock()函数。返回开启进程和调用clock()之间的的CPU时钟计时单元(clock tick)数,每过千分之一秒(1毫

秒),调用clock()函数返回的值就加1。因此该函数只能精确到1ms,低于1ms的程序全部返回0。

而你写的程序这么短!返回的seed应该每次都是0。不信你调试一下。呵呵


[ 本帖最后由 阿邋 于 2010-4-10 15:26 编辑 ]
#12
elf65307892010-04-10 13:38
rand()就可以
1