关于rand()
大家谁知道,随机函数是如何形成的吗,可以告诉我吗?
还有srand()到底有什么功效。
for(int i=0;i<100;i++)
{
a[i]=rand();//数组a[100]
}
为什么不要srand()时形成的a[i]不一样呢?
谢谢!
问题点数:10、回复次数:4Top
1 楼LionEagle(LionEagle)回复于 2002-04-11 18:45:41 得分 0
随机数(其实是伪随机数)产生的一般方法是用一个种子与一个数(好象是素数,记不太清楚了)相乘再加上一个数,然后再用一个数对和取模得到,这些数有一定要求(记不清了),满足这些要求才能使产生的数列更接近平均分布的白噪声。
srand为产生随机数提供种子,用randomize(bc)也可以提供种子
不使用srand,单次运行时,a[0]!=a[1];但第一次运行时的a[0]与第二,三,。。。次运行时的a[0]相同,a[1]~a[99]也是这样Top
2 楼yuzhantao(和女朋友一起去养狗)回复于 2002-04-11 19:26:47 得分 10
rand()=(x*317+65535)/32767 可能不对,不过差不太多。在很多c书上都有的
结果为一个0到32767的整数,x为种子
srand就是产生x的,也可以自己设定x的值。
第二个问题是种子不同
要是还不懂,加我的 qq 45494732。
有很多游戏都是用这种的。如色子Top
3 楼rojyyang(初学者)回复于 2002-04-11 19:32:12 得分 0
还是没懂,能说得更清楚点么?Top
4 楼armylau(冯.城.褐.兰)回复于 2002-04-11 19:41:08 得分 0
随机数是用一种算法产生的,衡量产生的随机法的好坏一般是周期性和独立性.周期性指产生的随机数重复的间距,如1,53,53,3435,1,53,53,3435的周期就为4.独立性则是指产生的后一个数与前面的数关联比较少.还有就是随机数的分布问题.rand()产生的是随机分布.种子大概就是用来产生随机数的初值,然后根据这个初值产生以后的随机数
Top




