关于rand()和srand()函数求助

snake19853100 2012-06-14 03:07:51
本人新手请教如下问题:
int main(void)
{
time_t seed=0;
seed=time(NULL);
srand((unsigned int)seed);
printf("%d\n",rand());
srand((unsigned int)seed);
printf("%d\n",rand());
system("PAUSE");
return 0;
}

int main(void)
{
time_t seed=0;
seed=time(NULL);
srand((unsigned int)seed);
printf("%d\n",rand());
printf("%d\n",rand());
system("PAUSE");
return 0;
}
第二段比第一段少了一行srand((unsigned int)seed);,结果运行程序时第一段输出的两个随机数一样,第二行不同,让我感到困惑,传递给函数的种子一定要传递两次才可以吗?
...全文
153 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-06-14
  • 打赏
  • 举报
回复
srand只需要且必须在程序初始化时调用一次!
疯疯癫癫 2012-06-14
  • 打赏
  • 举报
回复
伪随机,伪随机,srand((time(NULL));
Spy 2012-06-14
  • 打赏
  • 举报
回复
相同的种子,传给srand(),多次调用rand(),产生的随机数是一样的
赵4老师 2012-06-14
  • 打赏
  • 举报
回复
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\rand.c
/***
*rand.c - random number generator
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
* defines rand(), srand() - random number generator
*
*******************************************************************************/

#include <cruntime.h>
#include <mtdll.h>
#include <stddef.h>
#include <stdlib.h>

/***
*void srand(seed) - seed the random number generator
*
*Purpose:
* Seeds the random number generator with the int given. Adapted from the
* BASIC random number generator.
*
*Entry:
* unsigned seed - seed to seed rand # generator with
*
*Exit:
* None.
*
*Exceptions:
*
*******************************************************************************/

void __cdecl srand (
unsigned int seed
)
{
_getptd()->_holdrand = (unsigned long)seed;
}


/***
*int rand() - returns a random number
*
*Purpose:
* returns a pseudo-random number 0 through 32767.
*
*Entry:
* None.
*
*Exit:
* Returns a pseudo-random number 0 through 32767.
*
*Exceptions:
*
*******************************************************************************/

int __cdecl rand (
void
)
{
_ptiddata ptd = _getptd();

return( ((ptd->_holdrand = ptd->_holdrand * 214013L
+ 2531011L) >> 16) & 0x7fff );
}
Gloveing 2012-06-14
  • 打赏
  • 举报
回复
是滴。。这里的“随机”也只是伪随机,所要要模拟随机数,每次选不同的种子
kevinyank 2012-06-14
  • 打赏
  • 举报
回复
可以百度一下随机数种子。。
jackyjkchen 2012-06-14
  • 打赏
  • 举报
回复
srand设定种子之后,输出是固定的,一样的种子输出肯定一样

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧