c++问题关于函数rand()

有谁能帮我详细地讲解一下函数rand()的运行机制吗?它是怎么产生随机序列的?有劳啦!

区别就是,
int *a[] 是一个int 指针的数组,数组中的每个指针可能指向不同长度的一维数组。

而 int a[][3] 只是一个二维的数组,其一维的长度是确定了的即3。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-22
从系统中读取时间,然后转化为秒,最后取sin值追问

能稍微详细一点吗?

追答

1.rand 随机函数发生器
用法:int rand(void);
用法?:void srand(unsigned seed);
说明:rand使随机数发生器产生一范围从0~2的随机数。发生器通过调用参数值为1的srand函数可重初始化,也可用给定的函数值。
seed调用srand产生一新的起点。
可移植性:UNIX系统适用
源程序:
#include
#define MULTIPLIER 0x015a4e35L
#define INCREMENT 1
static long Seed = 1;
int rand(void)
{
Seed = MULTIPLIER*Seed + INCREMENT;
return ((int)(Seed>>16) & 0x7fff);
}
2.srand 初始化随机数发生器
用法:void srand(unsigned seed);
源程序:
#include
#define MULTIPLIER 0x015a4e35L
#define INCREMENT 1
static long Seed = 1;
void srand(unsigned seed)
{
Seed = seed;
}
摘自TC库函数源程序一书。

自己实现一个产生随机数的函数见高手这里:www.luocong.com/articles/show_article.asp?Article_ID=24

int rand(void)
{
Seed = MULTIPLIER*Seed + INCREMENT; //一个简单的乘法、加法运算
return ((int)(Seed>>16) & 0x7fff);
//Seed>>16是将seed向右移16位,seed是long型,只取高16位
//& 0x7fff,0x7fff转成2进制是0111111111111111,作用是把这个整数变为正整数
}

相似回答
大家正在搜