社区
C++ 语言
帖子详情
srand(time(NULL)),我不理解种子的含义,能说下吗
cinderella_m
2007-07-08 02:54:52
求100以内5个不同的随机数。。正确的代码是下面的:
int main()
{
srand(time(NULL));
for(int i=0; i<5; i++)
{
cout << rand()%100<< endl;}
}
我认为srand(time(NULL))是不是应该放到循环里面?时间每次都是不一样的,每次循环的时候应该都在执行一下srand(time(NULL))呢。
...全文
5160
6
打赏
收藏
srand(time(NULL)),我不理解种子的含义,能说下吗
求100以内5个不同的随机数。。正确的代码是下面的: int main() { srand(time(NULL)); for(int i=0; i<5; i++) { cout << rand()%100<< endl;} } 我认为srand(time(NULL))是不是应该放到循环里面?时间每次都是不一样的,每次循环的时候应该都在执行一下srand(time(NULL))呢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
美女宝贝
2012-04-24
打赏
举报
回复
6楼也有问题啊 sleep本身单位是second,然后你那个太大了 你不信去试试,上面所有的同志讲的不错,兄弟学习了 呵呵
jolong
2008-06-03
打赏
举报
回复
4
把srand(time(NULL)) 放到循环体内的话 其time(NULL) 得到的数是一样的
因为 time(NULL)的时间只是精确到秒 但是上面FOR循环一次的时间根本不用一秒
也就是说 srand()中的种子 你重新设置成一样的了
这样的话 下面 rand() 产生的随机数 必定是一样的
如果把srand()放到循环外面 它在循环中 只设置了一次种子
这样rand()产生的随机数序列将不同
上面使用 SLEEP(10) 是不够的~ 至少得1秒钟
也就是sleep(1000)
yoyo_sky
2007-07-08
打赏
举报
回复
to :alwaysLonely(不算特别笨),如果将srand(time(NULL))放到循环体内的话,产生的5个数是一样的,你可以试一下。。。
believefym
2007-07-08
打赏
举报
回复
1
种子只要一个即可,这样程序在一次执行过程中产生的数可以看作随机数
如果每次都重新设置种子,由于种子都一样,产生的数也会一样,就没有随机性可言了
而用时间做种子,由于时间的唯一性,能保证程序做【两次执行】中的随机数序列不相同
jixingzhong
2007-07-08
打赏
举报
回复
可以这样:
for(int i=0; i<5; i++)
{
sleep(10); //这样延迟时间,可以达到srand设置不同种子的目的
srand(time(NULL));
cout << rand()%100<< endl;
}
当然,完全没有必要这样,只是解释个原理....
jixingzhong
2007-07-08
打赏
举报
回复
程序执行的速度是很快的,
在循环内部死 srand 其实是在使用同一个种子。
【注意time的精度】
蒙特卡罗法求面积
这是只用蒙特卡罗发求面积的C++代码,例子:求图形近似值;(上机未通过) s
rand
初始化随机数发生器s
rand
((unsigned)
time
(
NULL
));是拿系统时间作为
种子
,由于时间是变化的,
种子
变化,可以产生不相同的随机数。 使用时,参数可以是unsigned型的任意数据,比如s
rand
(10); 如果不使用s
rand
用
rand
()产生的随机数,在多次运行,结果是一样的。
迷宫 c++实现 控制台下的
控制台下的迷宫 void
rand
om(int x,int y){ //随机产生迷宫 s
rand
( (unsigned)
time
(
NULL
) ); //s
rand
()函数产生一个以当前时间开始的随机
种子
int i;int j; for(j=1;j<=y;j++){ for(i=1;i<=x;i++) mg[i][j]=
rand
()%2; //产生随机的0或1赋给迷宫数组 } }
生成随机数
rand
函数的用法详解
函数
rand
()是真正的随机数生成器,而s
rand
()会设置供
rand
()使用的随机数
种子
。如果你在第一次调用
rand
()之前没有调用s
rand
(),那么系统会为你自动调用s
rand
()。而使用同
种子
相同的数调用 s
rand
()会导致相同的随机数序列被生成。s
rand
((unsigned)
time
(
NULL
))则使用系统定时/计数器的值做为随机
种子
。每个
种子
对应一组根据算法预先生成的随机数,所以,在相同的平台环境下,不同时间产生的随机数会是不同的,相应的,若将s
rand
(unsigned)
time
(
NULL
)改为s
rand
(TP)(TP为任一常量),则无论何时运行、运行多少次得到的“随机数”都
c语言s
rand
( (
time
(
NULL
) )
c语言中语句s
rand
( (
time
(
NULL
) ) ; 表示设置一个随机
种子
,每次运行都能保证随机
种子
不同。 在C语言中,
rand
()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,它是根据一个数,我们可以称它为
种子
,为基准以某个递推公式推算出来的一系数,但这不是真正的随机数,当计算机正常开机后,这个
种子
的值是定了的,除非你破坏了系统,为了改变这个
种子
的值。因此,C提供了s
rand
()函数,它的原型是 void s
rand
( int a)。用来改变这个
种子
值。s
rand
( (
time
s
rand
(
time
(
NULL
))
s
rand
函数是随机数发生器的初始化函数。原型:void s
rand
(unsigned seed); 用法:它初始化随机
种子
,会提供一个
种子
,这个
种子
会对应一个随机数,如果使用相同的
种子
后面的
rand
()函数会出现一样的随机数,如: s
rand
(1); 直接使用1来初始化
种子
。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用
time
函数来获得系统时间,它的返回值为从 00:00:00 GMT, Ja...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章