随机函数的控制!!
在网站开发中遇到随机函数得控制问题,希望能和大家交流交流
例:会员刚刚加入时,既等级较低时发生随机事件得概率很高,当达到一定级别时概率为最低。随着级别的再次升高,随机事件概率又提升。
例1:预先设置数组,设置好的数组既有随机概率的控制,用随机函数生成数组的下标,既随机的概率得到控制。
例如:a(0)=1 a(1)=0 a(2)=0 a(3)=0 a(4)=1 a(5)=0 a(6)=0 a(7)=1 a(8)=0 a(9)=0
其中1的个数为3个。数组总数为10。既1的概率为30%。
i=cint(rnd*10)
a(i)为1即为所得得概率
例2:非线形的概率
例:当级别从0-60时,发生随机事件的概率从50%-0%。当级别从60-99时概率为80%。(实际计算中99换为100所得系数好算)
非线形例如一元二次函数。Y=a*X*X+b*X+c
按照以上数据得到两端一元二次函数
第一段:0-60
方程组:
a*0*0+b*0+c=50
-b/2a=60
a*60*60+b*60+c=0
求得
a=1/72、b=5/3、c=50
第二段:60-100
方程组
a*60*60+b*60+c=0
-b/2a=60
a*100*100+b*100+c=80
求得
a=1/20、b=-6、c=-180
代码如下(仅供参考)
dim lv,y,i
'lv为等级
dim a(100)
lv=2
if lv <60 then
y=(lv*lv/72)-(lv*5/3)+50
else
y=(lv*lv/20)-6*lv-180
end if
y=cint(y)
'按照生成得概率生成数组,这里还需要改进
for i=0 to 99
if i<y then
a(i)=1
else
a(i)=0
end if
next
randomize
i=cint(rnd*99)
a(i)为真得概率即为所得概率,可作以后得应用。
例3:幸运参数得设定。可以为每个会员设定幸运值,幸运越高随机事件概率越高。这个是线性得
例:幸运值最大为100万,Y=AX。100=A*100万。A=1万
只需将上面得
if lv <60 then
y=(lv*lv/72)-(lv*5/3)+50
else
y=(lv*lv/20)-6*lv-180
end if
换成
Y=cint(luck/10000)+1
(+1是为了当幸运值小于10000时也可以发生随机事件,概率1%,可根据自己要求定)
这是我目前使用得方法,希望能和大家多多交流,个人感觉可能很占资源和笨拙,找到更好得方法。
MSN:zhi_angel@msn.com QQ:1168064