日期:2009-07-16  浏览次数:20746 次

随机函数的控制主要是通过以随机生成的数字为下标的数组来控制随机的概率


应用1:简单的控制:
要求:某论坛发生某随机事件的概率为30%
思考:可以直接通过数组进行控制,数组为个数10个,其中值为1的有3个,其余的都是0,用随机函数随机生成数字下标,既得到30%的概率
代码:
<%
a(0)=0
a(1)=0
a(2)=1
a(3)=0
a(4)=1
a(5)=0
a(6)=1
a(7)=0
a(8)=0
a(9)=0
randomize
i=cint(rnd*10)
if a(i) then
发生随机事件
end if
%>

应用2:线性的控制
要求:某论坛为鼓励用户发表文章,在发表文章时产生随机的事件,例如给用户分数、金币、物品等。概率随用户的文章数的增加而增加,当文章数达某个值,达到最大100%。
思考:因为是线性增加,则此函数为Y=KX+b。其中Y为概率,X为文章数,K、b为系数。例如:当文章数为0时概率为1%(这个值可根据自己需要设定),当用户文章数达到10000时,概率为100。
既:1=K*0+b 100=K*10000+b。得到b=1、k=0.0099
代码:
<%
odds=0.0099*postnum+1 'postnum为发表的文章数
if odds>100 then odds=100
end if
odds=cint(odds)
for i=0 to 99
if i<odds then a(i)=1
else a(i)=0
end if
next
randomize
i=cint(rnd*100)
if a(i) then
发生随机事件
end if
%>
应用3:线性、非线性的控制
要求:某论坛发生的随机事件的概率当文章数为0时,发生的概率为60%。当文章数由0-100,概率降低,当为100时达到最低10%,随后概率一直增高。当达到10000时达到最大90%。文章数大于10000时,概率也为90%。
思考:可分为线性和非线性控制。
先看线性:分为3段。0-100 Y=KX+b 。根据数据得K=-0.5、b=60 ;当100-10000时求得K=8/990、b=9100/990。当10000-无穷时。只需将应用2中得代码odds=0.0099*postnum+1换成如下代码:
if postnum>=0 and postnum<=100 then
odds=-0.5*postnum+60
else
odds=8*postnum/990+9100/990
end if
if odds>90 then
odds=90
end if
如果是非线性。例如一元二次方程Y=a*X*X+b*X+c
用以上方法求得当0-100 100-10000 和大于10000时得系数。
代码编写同上。