我想 按权重重取一个数, 百分之50的概率重取到元宝,百分之10的概率抽取到转生丹,百分之一的概率抽取到强化石。这个怎么写 ,要求是必须抽中一个
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-04-24 15:39:10 |
👁️ 阅读: 13
根据课程日志记录,要实现按权重的概率抽取并确保必中一个物品,可以使用`RANDOMEX`指令结合`#IF`判断。以下是实现方案:
首先,设置一个变量来存储抽取结果,然后根据权重进行判断。由于权重总和为61%(50%+10%+1%),剩余的39%可以设置为未中奖或默认项,但根据要求“必须抽中一个”,我们可以将剩余概率分配给一个保底物品,或者调整权重使总和为100%并确保每个概率段都对应一个物品。这里假设你希望未命中指定概率时,也获得一个默认物品(例如“金币”),以下脚本按100%总权重设计,其中元宝50%,转生丹10%,强化石1%,金币39%(保底)。
```txt
[@抽取物品]
#ACT
; 初始化一个随机数,范围1-100
RANDOM 100
MOV N$随机数 <$RANDOM>
; 根据权重判断
#IF
LARGE N$随机数 0
SMALL N$随机数 51 ; 1-50,概率50%
#ACT
MOV S$抽中物品 元宝
GOTO @给予物品
#IF
LARGE N$随机数 50
SMALL N$随机数 61 ; 51-60,概率10%
#ACT
MOV S$抽中物品 转生丹
GOTO @给予物品
#IF
LARGE N$随机数 60
SMALL N$随机数 62 ; 61,概率1%
#ACT
MOV S$抽中物品 强化石
GOTO @给予物品
#IF
; 剩余情况 62-100,概率39%,作为保底
#ACT
MOV S$抽中物品 金币
[@给予物品]
#ACT
; 这里根据S$抽中物品给予对应物品,例如使用Give命令
; Give <$STR(S$抽中物品)> 1
SENDMSG 6 恭喜你抽中了:<$STR(S$抽中物品)>
```
注意:`RANDOM`生成0-99的随机数,但上述脚本使用1-100的范围以便于理解概率分布。实际使用中,你可以根据具体需求调整概率区间和物品。如果要求严格按百分比且必中指定三个物品之一,可以将剩余概率合并到某个物品(如元宝)中,或调整权重为100%覆盖三个物品(例如元宝61%,转生丹10%,强化石1%,但总和72%,需按比例缩放至100%)。如需更精确的权重控制,可调用Lua实现,但TXT脚本本身支持上述概率判断。
← 返回问答库