|
发表于 2007-11-3 17:18:45
|
显示全部楼层
随机数可以分为真正的随机数和伪随机数.
伪随机数是用线性同余算法产生的.
因为,产生的随机数要保证两点,第一点是,随机数是平均分布的,第二点是,是随机的.
产生平均分布,一般就是线性同余算法了.
这个算法是,质数a,b,求(0,c)范围内的一个伪随机数
x=(a*x+b) (mod c)
写成Jass:
[codes=jass]
globals
integer temp=224
endglobals
function GetRandomInt takes integer bot,integer top returns integer
set temp=(temp*1103515245)+12345
set temp=temp/65536
set temp=temp-temp/(top-bot)+bot
return temp
endfunction
[/codes]
看一下,这个算法要先设置一个temp值,才能进行,只要temp的值设定好,以后产生的数,实际上就是确定的序列了,也就是你所说的:每次都一样.
问题: 把temp设成随机的不可以么?
回答: 可以.最简单的办法如下用triggersleepaction和真实时间的差
问题: 每产生一个随机数后,重设temp可以不?
回答: 不可以,因为随机数不随机分布了. |
|