浅谈随机得控制

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

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

应用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时得系数。

代码编写同上。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航