「高阶数值」适用于大部分随机数算法的数值公式.docVIP

  • 4
  • 0
  • 约2.57千字
  • 约 2页
  • 2017-06-08 发布于重庆
  • 举报

「高阶数值」适用于大部分随机数算法的数值公式.doc

「高阶数值」适用于大部分随机数算法的数值公式

「高阶数值」适用于大部分随机数算法的数值公式 数值规则:设计一个随机数,当随机到成功值时,就会获得一个对象或对象组中的对象。 如果是对象组,则某个对象获得的次数越多,其概率会随之降低,而其它对象的获得概率会有所增加(注:如果对象组中的某个对象获得的次数达到上限,则它的概率将会被合理地分配到其它对象中) 示例:假设游戏中的某个强化功能有A、B、C三类的强化槽,每次强化成功则A、B、C中随机一项获得一次强化值,A、B、C均有最大强化次数 (比如A可以增加多少点某个属性值,B以百分比的形式增加某个属性值,C以百分比的形式增加所有的属性值,当然,这个设定与该公式是无直接关系的,仅仅用于说明A、B、C的作用效果是A B C;A可以强化a次,B可以强化b次,C可以强化c次,总次数为all) /* 示例的作用仅仅是便于理解,而非公式的局限性 */ 1、设定参数 (1)基础数据: 成功概率:Rand_all;出现A的概率:Rand_a,出现B的概率:Rand_b,出现C的概率:Rand_c 出现数量:Num_all;A的出现数量:Num_a,B的出现数量:Num_b,C的出现数量:Num_c 总的数量:NumMax_all;A的最大数量:NumMax_a,B的最大数量:NumMax_b,C的最大数量:NumMax_c (2)调整系数: 幂系数:Basis_pow;上限系数:Basis_max;属性系数:Basis_game;属性修正系数:Basis_gameX (3)规则系数: A的基础概率:A_rand;B的基础概率:B_rand;C的基础概率:C_rand(注:B_rand+C_rand 1.00) 2、制定公式 (1)强化成功 Rand_all 1/(Num_all+1)^Basis_pow*max(Basis_max,roundup(Basis_game,0)*Basis_gameX))*(1-int(Num_all/NumMax_all)) (2)出现A或B或C的概率 Rand_a ((A_rand - Num_a*(A_rand / NumMax_a))+((1-A_rand)+ Num_a*(A_rand / NumMax_a))*Num_b+Num_c)/(NumMax_b+Numax_c))*(1-int(Num_a / NumMax_a)) Rand_b (B_rand*(1 – Num_b / NumMax_b*(1-int(Num_c / NumMax_c)))+C_rand*(Num_c / NumMax_c)*(1 - int(Num_b / NumMax_b)))*(1 - Rand_a) Rand_c (C_rand*(1-Num_c / NumMax_c*(1-int(Num_b / NumMax_b)))+B_rand*(Num_b / NumMax_b)*(1-int(Num_c / NumMax_c)))*(1-Rand_a) (注:max、roundup、int等属于excel中的函数格式规则) 3、公式解析: (1)强化成功Rand_all 1/(Num_all+1)^Basis_pow // 强化成功的曲线,即整个公式的基础概率,Basis_pow用于调整获得的难度,如果第一次的成功率需要小于1,则可以将(Num_all+1)中的1设定成更大的浮点型数值 *max(Basis_max,roundup(Basis_game,0)*Basis_gameX)) // 该公式部分的作用是调整强化成功的基础概率,Basis_max用于控制强化值,以避免属性系数会使得强化成功概率在多次保持在100%;Basis_game是该部分的核心,可以表示用于代入游戏中的某个属性值,例如时间、成就点、级别、失败次数等等,也有可能是某个子公式,例如时间/3600,成就点区平方根或级别的幂函数等等。而Basis_gameX是用于对该数据的修正,例如遇到值过大的数据时,可以将该值修正为平衡数据,因此,属性修正系数允许省略。 *(1-int(Num_all/NumMax_all)) // 可省略。设置一个公式开关,以避免数据的漏洞导致强化总次数达到最大时仍然还有成功的概率会被继续强化,例如:原本是强化总次数30次,结果能够达到31次 (2_a)出现A的概率Rand_a ((A_rand - Num_a*(A_rand / NumMax_a)) // 基础系数A_rand也就是获得A的初始概率,该值为小于1的浮点型数据,后半部分表示当A出现的次数越多,则Rand_a的值会越小 +((1-A_rand)+ Num_a*(A_rand / NumMax_a))*(Num_b+Num_c)/(NumMax_b

文档评论(0)

1亿VIP精品文档

相关文档