立即注册 找回密码

搜索

GEEGOM传奇抽奖几率脚本算法

 火... [复制链接]
发表于 2025-3-6 09:25:48 | 显示全部楼层 |阅读模式
传奇脚本关于Random机率算法详细说明

20210320新增:今天发现Random后面只能是数值,不能是变量如P N之类的变量(用movr做几率脚本 精准度可以做到无限小数点,看最下面脚本实例)

说明:Random 是一个随机标签,一般用于判定脚本里,#if的下面,当然这个标签也用在新爆率文件里,可以查看我写的一篇关于爆率的文章,这里就不多讲了

格式:Random 数值(数值与爆率文件里的数值机率类同)

举例:Random 10(这就表示1/10的概率)

大家在修改或编写脚本时经常会用到Random这个标签,格式和用法我这里不多讲,主要是讲一下机率的算法以及详细百分比的脚本是如何实现的

先给大家看个实例:以中奖为例吧
;----------------------------------------
[@main]
#If
Random 2
#Act
give 礼包 1
SendMsg 7 恭喜您,获得礼包,中奖机率是50%
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------
以上面的实例来展开其中的机率算法。

Random 2(也就是1/2,机率就是50%)

那我们来运算一下从1%-100%的机率算法,并以脚本来实现(会有小部分误差)

▓▓▓▓▓▓▓第一种方法,正向算法

Random 1(也就是1/1,机率就是100%)

Random 2(也就是1/2,机率就是50%)

Random 3(也就是1/3,机率就是33.33%)

Random 4(也就是1/4,机率就是25%)

Random 5(也就是1/5,机率就是20%)

Random 6(也就是1/6,机率就是16.67%)

Random 7(也就是1/7,机率就是14.29%)

Random 8(也就是1/8,机率就是12.5%)

Random 9(也就是1/9,机率就是11.11%)

Random 10(也就是1/10,机率就是10%)

Random 20(也就是1/20,机率就是5%)

Random 30(也就是1/20,机率就是3.33%)

Random 40(也就是1/20,机率就是2.5%)

Random 50(也就是1/20,机率就是2%)

Random 60(也就是1/20,机率就是1.67%)

Random 70(也就是1/20,机率就是1.43%)

Random 80(也就是1/20,机率就是1.25%)

Random 90(也就是1/20,机率就是1.11%)

Random 100(也就是1/20,机率就是1%)

以是概率从1%-100%百分比值,但是大家看到还有许多缺失是吧

▓▓▓▓▓▓▓第二种方法:反向算法

把上面机率脚本用#ElseAct反过来写一遍是不是多了将近一半的百分比值,这叫反向算法

例如:90%的获得礼包机率怎么写脚本,我就把10%中奖概率写成10%不中,不就成了90%了吗!
;----------------------------------------
[@main]
#If
Random 10
#Act
SendMsg 7 对不起!没获得礼包!
#ElseAct
give 礼包 1
SendMsg 7 恭喜您,获得礼包,中奖机率是90%
break
;----------------------------------------

那么正面中奖率百分比值有(100%、50%、25%、20%、10%等)

那么反面中奖率百分比值有(90%、80%、75%、50%、等)

我们用了第一种方法获得了百分比,但还是不全,这样我们就用第三种方法来补一下缺,拆分算法:百分比相加或相减法

▓▓▓▓▓▓▓第三种方法:拆分算法

▓相加算法:就是需要50%以上的百分比用正向算法的脚本去实现
;----------------------------------------
[@main]
#If
Random 2
#Act
give 礼包 1
SendMsg 7 恭喜您,获得礼包,中奖机率是75%
break
#If
Random 2
#Act
give 礼包 1
SendMsg 7 恭喜您,获得礼包,中奖机率是75%
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------
看明白了吗?,第一次用50%机率去执行,中了停止脚本,没中继续来一次,机率还是50%;

原理:我们玩过用硬币抛正反面的游戏,抛到正面为赢,如果抛一次机率就是50%,如果给你两次机率,只要抛到正面就赢,这样我们的赢的机率75%了

抛两次的排列结果是:正正,反正、正反、反反。只要两次都不是反面就赢,是不是75%

▓相减算法:就是需要50%以下的百分比用反向算法的脚本去实现
;----------------------------------------
[@main]
#If
Random 2
#Act
SendMsg 7 对不起!没获得礼包!
break
#If
Random 2
#Act
give 礼包 1
SendMsg 7 恭喜您,获得礼包,中奖机率是25%
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------
这次注意看脚本,第一次用50%机率去执行,没中奖停止脚本,中将继续来一次,机率还是50%;

同样抛硬币游戏两次的排列结果是:正正,反正、正反、反反。必需两次都为正才赢,是不是只有25%

拆分算法:所谓拆分算法就是用简单的百分比去相加或相减

所以通过以下几种方法,最后给出大家以5的倍数的百分比的脚本
;----------------------------------------100%
[@main]
#If
Random 1
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是:100%
break
;----------------------------------------95%
[@main]
#If
Random 20
#Act
SendMsg 7 对不起!没获得礼包!
break
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是:95%
break
;----------------------------------------90%
[@main]
#If
Random 10
#Act
SendMsg 7 对不起!没获得礼包!
break
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是90%
break
;----------------------------------------85%=80+5
[@main]
#If
Random 5
#Act
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是85%
break
#If
Random 4
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是85%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------80%
[@main]
#If
Random 5
#Act
SendMsg 7 对不起!没获得礼包!
break
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是80%
break
;----------------------------------------75%
[@main]
#If
Random 4
#Act
SendMsg 7 对不起!没获得礼包!
break
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是75%
break
;----------------------------------------70%=50+10+10
[@main]
#If
Random 2
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是70%
break
#If
Random 5
#Act
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是70%
break
#If
Random 4
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是70%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break

;----------------------------------------60%=50+10
[@main]
#If
Random 2
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是60%
break
#If
Random 5
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是60%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------55%=50+5
[@main]
#If
Random 2
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是55%
break
#If
Random 10
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是55%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------50%
[@main]
#If
Random 2
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是50%
break
;----------------------------------------45%=50-5
[@main]
#If
Random 2
#Act
SendMsg 7 对不起!没获得礼包!
break
#If
Random 10
#Act
SendMsg 7 对不起!没获得礼包!
break
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是45%
break
;----------------------------------------40%=50-10
[@main]
#If
Random 2
#Act
SendMsg 7 对不起!没获得礼包!
break
#If
Random 5
#Act
SendMsg 7 对不起!没获得礼包!
break
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是40%
break
;----------------------------------------35%=50-10-5
[@main]
#If
Random 2
#Act
SendMsg 7 对不起!没获得礼包!
break
#If
Random 5
#Act
SendMsg 7 对不起!没获得礼包!
break
#If
Random 12
#Act
SendMsg 7 对不起!没获得礼包!
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是30%
break
;----------------------------------------30%=50-10-10
[@main]
#If
Random 2
#Act
SendMsg 7 对不起!没获得礼包!
break
#If
Random 5
#Act
SendMsg 7 对不起!没获得礼包!
break
#If
Random 6
#Act
SendMsg 7 对不起!没获得礼包!
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是30%
break
;----------------------------------------25%
[@main]
#If
Random 4
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是25%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------20%
[@main]
#If
Random 5
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是20%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------15%
[@main]
#If
Random 5
#Act
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
#If
Random 16
#Act
SendMsg 7 对不起!没获得礼包!
break
#ElseAct
SendMsg 7 恭喜您,获得礼包,中奖机率是15%
break
;----------------------------------------10%
[@main]
#If
Random 10
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是10%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------5%
[@main]
#If
Random 20
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是5%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------1%
[@main]
#If
Random 100
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是1%
break
#ElseAct
SendMsg 7 对不起!没获得礼包!
break
;----------------------------------------

用movr做随机数,精确度非常准,Random太坑,做个简的还行下面是实例和逻辑

[@main]
#if
#act
mov N$中奖率 70 ;【解释:设置中奖率70%】
movr P10 100 ;【解释:定义P10变量,从0-99随机一个数值】

#If
Small P10 <s t r ( N str(Nstr(N中奖率)> ;【解释:判定P10变量值,是否小于中奖率,如果小于中奖,大于等于70则没中奖】
#Act
SendMsg 7 恭喜您,获得礼包,中奖机率是70% break
#ElseAct
SendMsg 7 对不起!没获得礼包! break

怎么样,是不是1-100中奖率都可以写出来,脚本就这么一点点搞定!!
如果你要做到千分比,那么就在下面两什定义值多加个零,是不是就成千分比了

mov N$中奖率 7 ;【解释:设置中奖率 0.7%】
movr P10 1000 ;【解释:定义P10变量,从0-999随机一个数值】
————————————————




上一篇:LegendM2引擎检测人物血量和魔法值的脚本命令
下一篇:GOM引擎传奇中给字符串增加空格的脚本命令分享
回复

使用道具 举报

发表于 2025-3-6 09:32:39 | 显示全部楼层
这东西我收了!谢谢楼主!
回复

使用道具 举报

发表于 2025-3-6 11:16:42 | 显示全部楼层
在这里可以学到很多传奇一条龙开区时遇到的问题。
回复

使用道具 举报

发表于 2025-3-6 15:20:09 | 显示全部楼层
谢谢楼主!喜欢这里的东西,方便又好用!
回复

使用道具 举报

发表于 2025-3-6 23:01:56 | 显示全部楼层
这东西我收了!谢谢楼主!
回复

使用道具 举报

发表于 2025-3-8 06:54:52 | 显示全部楼层
传奇论坛里面相对来说比较好的一个!感谢站长分享的技术教程。
回复

使用道具 举报

发表于 2025-3-8 10:08:47 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!
回复

使用道具 举报

发表于 2025-3-8 22:38:31 | 显示全部楼层
开传奇一条龙不求人,自己学习架设。
回复

使用道具 举报

发表于 2025-3-9 15:10:48 | 显示全部楼层
传奇论坛里面相对来说比较好的一个!感谢站长分享的技术教程。
回复

使用道具 举报

发表于 2025-3-10 16:13:56 | 显示全部楼层
感谢楼主提供这么好的论坛」
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【64gm论坛,传奇版本库】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服QQ:909928377

在线会员自助办理
传奇手游版本库
传奇世界版本库

顶部

QQ|传奇开区一条龙|私服服务端|传奇单机架设教程|手机版|64gm论坛 ( 鄂ICP备2021011479号-2 )|网站地图

GMT+8, 2025-3-26 10:49 , Processed in 0.192718 second(s), 52 queries .

Powered by 64gm X3.5 © 2009-2023 64gm论坛 Inc &

免责声明:本站所有资源均来至网络,仅供学习交流,严禁用于商业用途,请于24小时内删除!开区请获得授权.