有关srand()的简单的问题 srand()是不是用不同的种子就一定得到不同的伪随机序列 偶有点偏理论,因此这个问题很无聊,但希望高手不吝赐教;) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 得到的数在0和MAX_RAND之间啦,如果你申请态多的话,当然有可能重复 呵呵 楼上误解了 随机数当然是可能重复的 但是用一个随机种子 加上n个rand函数就可以产生一个长度为n的随机序列 不是吗我是想知道 序列有没有重复的可能呢 呵呵 如果有srand和rand的实现源码就好了 /****rand.c - random number generator** Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.**Purpose:* defines rand(), srand() - random number generator********************************************************************************/#include <cruntime.h>#include <mtdll.h>#include <stddef.h>#include <stdlib.h>#ifndef _MTstatic long holdrand = 1L;#endif /* _MT *//****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 ){#ifdef _MT _getptd()->_holdrand = (unsigned long)seed;#else /* _MT */ holdrand = (long)seed;#endif /* _MT */}/****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 ){#ifdef _MT _ptiddata ptd = _getptd(); return( ((ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L) >> 16) & 0x7fff );#else /* _MT */ return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);#endif /* _MT */} 如何测度引用的对象是否为空引用? 如何确定一个用户 今天遇到不开心的事,散点分来发泄一下。 高手请进:如何突破桌面防火墙??? 来者有分! 关于命名空间 ADO中,打开数据库文件时,怎样做到一个文件可以同时打开多次? 关于Jet与Ado的问题 做过安装程序的请进! 关于list control控件中怎么将列换行? 菜鸟求救:如何实时监控一个文件是否被修改过,即如何判断一个文件内容有变化..... 我想在主线程中阻塞5秒,但是有不想停止主线程的消息响应,如ONTIMER等。但是SLEEP(),WAITFORSINGLEOBJECT(),这两个函数会挂起当前 丢失头文件 "propidl.h"
随机数当然是可能重复的 但是用一个随机种子 加上n个rand函数就可以产生一个长度为n的随机序列 不是吗
我是想知道 序列有没有重复的可能呢 呵呵 如果有srand和rand的实现源码就好了
*rand.c - random number generator
*
* Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
* defines rand(), srand() - random number generator
*
*******************************************************************************/#include <cruntime.h>
#include <mtdll.h>
#include <stddef.h>
#include <stdlib.h>#ifndef _MT
static long holdrand = 1L;
#endif /* _MT *//***
*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
)
{
#ifdef _MT _getptd()->_holdrand = (unsigned long)seed;#else /* _MT */
holdrand = (long)seed;
#endif /* _MT */
}
/***
*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
)
{
#ifdef _MT _ptiddata ptd = _getptd(); return( ((ptd->_holdrand = ptd->_holdrand * 214013L
+ 2531011L) >> 16) & 0x7fff );#else /* _MT */
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
#endif /* _MT */
}