您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 「高阶数值」适用于大部分随机数算法的数值公式
「高阶数值」适用于大部分随机数算法的数值公式数值规则:设计一个随机数,当随机到成功值时,就会获得一个对象或对象组中的对象。如果是对象组,则某个对象获得的次数越多,其概率会随之降低,而其它对象的获得概率会有所增加(注:如果对象组中的某个对象获得的次数达到上限,则它的概率将会被合理地分配到其它对象中)示例:假设游戏中的某个强化功能有A、B、C三类的强化槽,每次强化成功则A、B、C中随机一项获得一次强化值,A、B、C均有最大强化次数(比如A可以增加多少点某个属性值,B以百分比的形式增加某个属性值,C以百分比的形式增加所有的属性值,当然,这个设定与该公式是无直接关系的,仅仅用于说明A、B、C的作用效果是ABC;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_all1/(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+Numax_c))//当B与C出现的次数增加时,则A的获得概率会相对提高。乘号之前的部分会随着A获得的数量而逐渐增加,趋近于100%,而后面半部分是核心,只有在B与C全部出现时,则会100%出现A*(1-int(Num_a/NumMax_a))//不可省略。与(1)中的相关公式部分作用相同(2_b)出现B的概率Rand_b(B_rand*(1–Num_b/NumMax_b*(1-int(Num_c/NumMax_c)))//当B的获得数量增加时,则Rand_b的概率会随之降低;但是如果C的获得数量达到最大值时,则降低的规则将会被忽略,因为Num_c/NumMax_c会等于1,也只有其为整数时,int()函数才会输出为1,否则为0+C_rand*(Num_c/NumMax_c)*(1-int(Num_b/NumMax_b)))//当C的获得数量增加时,则Rand_b的概率会随之增加;但是如果B的获得数量达到最大值时,则增加的规则会被忽略。同时,上一部分和该部分的总和结果为0,因此Rand_b的获得概率为0*(1-Rand_a)//该数据为B与C的获得概率总和(2_c)出现C的概率Rand_cRand_c与Rand_b的结构相同,因此不作解析
本文标题:「高阶数值」适用于大部分随机数算法的数值公式
链接地址:https://www.777doc.com/doc-2806306 .html