local suiji = math.random(1,100)
local name = ''
if suiji > 50 and suiji < 81 then
name = '二星龙珠'
elseif suiji > 80 and suiji < 94 then
name = '三星龙珠'
elseif suiji > 92 and suiji < 99 then
name =
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-06 13:25:45 |
👁️ 阅读: 0
我是lua后端老师!
小仙,我来帮你调整一下这个概率。你的代码逻辑有些问题,主要是条件判断有重叠和遗漏。
你想要的是:
- 50% 一星龙珠
- 30% 二星龙珠
- 13% 三星龙珠
- 5% 四星龙珠
- 2% 五星龙珠
但你的代码里:
1. `suiji > 50 and suiji < 81` 是 30%(51-80)
2. `suiji > 80 and suiji < 94` 是 13%(81-93)
3. `suiji > 92 and suiji < 99` 是 6%(93-98)这里和上面的有重叠
4. `suiji > 97 and suiji < 100` 是 2%(98-99)
5. 剩下的 50%(1-50, 94-97, 100)都是一星龙珠
这样概率分布就不对了。我给你重新写一个:
```lua
local suiji = math.random(1,100)
local name = ''
if suiji <= 50 then -- 1-50: 50%
name = '一星龙珠'
elseif suiji <= 80 then -- 51-80: 30%
name = '二星龙珠'
elseif suiji <= 93 then -- 81-93: 13%
name = '三星龙珠'
elseif suiji <= 98 then -- 94-98: 5%
name = '四星龙珠'
else -- 99-100: 2%
name = '五星龙珠'
end
return name
```
这样就是:
- 1-50(50个数字):一星龙珠,概率50%
- 51-80(30个数字):二星龙珠,概率30%
- 81-93(13个数字):三星龙珠,概率13%
- 94-98(5个数字):四星龙珠,概率5%
- 99-100(2个数字):五星龙珠,概率2%
总共正好100%,概率分布也正确了。下次写概率判断的时候要注意条件不能重叠,要用连续的范围判断,这样就不会出错了!
我是lua后端老师!
小仙,我来帮你调整一下这个概率。你的代码逻辑有些问题,主要是条件判断有重叠和遗漏。
你想要的是:
- 50% 一星龙珠
- 30% 二星龙珠
- 13% 三星龙珠
- 5% 四星龙珠
- 2% 五星龙珠
但你的代码里:
1. `suiji > 50 and suiji < 81` 是 30%(51-80)
2. `suiji > 80 and suiji < 94` 是 13%(81-93)
3. `suiji > 92 and suiji < 99` 是 6%(93-98)这里和上面的有重叠
4. `suiji > 97 and suiji < 100` 是 2%(98-99)
5. 剩下的 50%(1-50, 94-97, 100)都是一星龙珠
这样概率分布就不对了。我给你重新写一个:
```lua
local suiji = math.random(1,100)
local name = ''
if suiji <= 50 then -- 1-50: 50%
name = '一星龙珠'
elseif suiji <= 80 then -- 51-80: 30%
name = '二星龙珠'
elseif suiji <= 93 then -- 81-93: 13%
name = '三星龙珠'
elseif suiji <= 98 then -- 94-98: 5%
name = '四星龙珠'
else -- 99-100: 2%
name = '五星龙珠'
end
return name
```
这样就是:
- 1-50(50个数字):一星龙珠,概率50%
- 51-80(30个数字):二星龙珠,概率30%
- 81-93(13个数字):三星龙珠,概率13%
- 94-98(5个数字):四星龙珠,概率5%
- 99-100(2个数字):五星龙珠,概率2%
总共正好100%,概率分布也正确了。下次写概率判断的时候要注意条件不能重叠,要用连续的范围判断,这样就不会出错了!
← 返回问答库