游戏中几种概率设计

来源:互联网 发布:linux进去编辑模式 编辑:程序博客网 时间:2024/06/04 18:38

游戏中常见的4种概率设计

1、常规做法,直接配置概率,程序直接判定

2、在1的基础上,加个保底次数,当连续不发生的次数高于保底时,强制发生

3、设置基础概率,事件不发生概率翻倍

4、设置数组,将事件发生概率变成数组元素


设定预计平均发生概率为1/20(20次发生1次),模拟10w次方案1~3后得结果(方案4就不模拟了)







附上各方案的模拟代码

Option ExplicitSub Propty1() '设定概率,直接比对    Dim stat(1 To 10000, 1 To 10) As Double, i As Integer, j As Integer    Dim a As Double, count As Long    Randomize    a = InputBox("输入成功率", "成功率", "0.05")    For i = 1 To 10        For j = 1 To 10000            count = 1            Do While Rnd() > a                count = count + 1            Loop            stat(j, i) = count        Next j    Next i    Sheets("直接概率").Range("A1:J10000") = statEnd SubSub Propty2() '在1的基础上,设定保底次数    Dim stat(1 To 10000, 1 To 10) As Double, i As Integer, j As Integer    Dim a As Double, b As Integer, count As Long    Randomize    a = InputBox("输入成功率", "成功率", "0.035")    b = InputBox("输入保底次数", "保底次数", "40")    For i = 1 To 10        For j = 1 To 10000            count = 1            Do While Rnd() > a And count < b                count = count + 1            Loop            stat(j, i) = count        Next j    Next i    Sheets("加保底").Range("A1:J10000") = statEnd SubSub Propty3() '不成功几率翻倍    Dim stat(1 To 10000, 1 To 10) As Double, i As Integer, j As Integer    Dim a As Double, count As Long    Randomize    a = InputBox("输入成功率", "成功率", "0.0038")    For i = 1 To 10        For j = 1 To 10000            count = 1            Do While Rnd() > count * a                count = count + 1            Loop            stat(j, i) = count        Next j    Next i    Sheets("不成功几率翻倍").Range("A1:J10000") = statEnd Sub


0 0