lua 写一个抽奖,要求分20个奖池,奖池编号从1到20代表越来越稀有,其几率也越来越低
时间: 2023-07-31 07:10:10 浏览: 72
以下是一个简单的 Lua 抽奖程序,满足分20个奖池、奖池编号从1到20代表越来越稀有、几率越来越低的要求:
```lua
-- 初始化奖池,每个奖池中奖率为 5%
local pools = {}
for i = 1, 20 do
pools[i] = 0.05 * (1 - 0.05) ^ (i - 1)
end
-- 抽奖函数
function draw()
-- 随机生成一个 [0,1) 之间的浮点数
local rand = math.random()
-- 根据随机数确定所中的奖池
for i = 1, 20 do
if rand < pools[i] then
return i
else
rand = rand - pools[i]
end
end
-- 如果都没中,返回 0
return 0
end
-- 测试代码
math.randomseed(os.time())
for i = 1, 100 do
print(draw())
end
```
程序中使用了一个数组 `pools` 来存储每个奖池的中奖率,每个奖池的中奖率为 5% 乘以一个衰减因子 `(1 - 0.05) ^ (i - 1)`,其中 `i` 是奖池编号。在抽奖函数 `draw` 中,先随机生成一个 [0,1) 之间的浮点数 `rand`,然后根据 `rand` 确定所中的奖池,如果都没中,返回 0。最后,使用 `math.randomseed(os.time())` 来初始化随机数种子,保证每次运行程序时都能获得不同的结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)