Lua在给定范围内,生成一个不重复的随机数
时间: 2023-09-14 17:12:10 浏览: 242
可以使用Lua的math.random()函数和table.indexOf()函数来生成一个不重复的随机数。具体实现方法如下:
```lua
function generateRandomNumber(start, stop, exclude)
local num = math.random(start, stop)
while num == exclude do -- 检查是否与exclude相等
num = math.random(start, stop)
end
return num
end
-- 示例:生成一个范围在1~100之间、不等于50的随机数
local num = generateRandomNumber(1, 100, 50)
print(num)
```
在上述代码中,generateRandomNumber()函数接受三个参数:起始值start、结束值stop、要排除的数exclude。函数内部使用while循环来确保生成的随机数不等于exclude。最后返回生成的随机数。
相关问题
Lua在给定范围内,生成指定个数不重复随机数组
可以使用Lua的math.random()函数和table.insert()函数来生成指定个数的不重复随机数组。具体实现方法如下:
```lua
function generateRandomArray(start, stop, count)
local result = {}
for i = 1, count do
local num = math.random(start, stop)
while table.indexOf(result, num) do -- 检查是否已经存在
num = math.random(start, stop)
end
table.insert(result, num)
end
return result
end
-- 示例:生成10个范围在1~100之间的不重复随机数
local arr = generateRandomArray(1, 100, 10)
print(table.concat(arr, ", "))
```
在上述代码中,generateRandomArray()函数接受三个参数:起始值start、结束值stop、生成个数count。函数内部使用while循环和table.indexOf()函数来确保生成的随机数不重复。最后返回生成的随机数组。
Lua 给定随机数范围 随机取几个不重复得数
### Lua 中实现从给定范围内选取若干个不重复的随机数
在 Lua 编程环境中,为了从指定范围内获取多个不重复的随机整数,可以通过构建一个包含该范围内的所有可能数值列表来达成目标。接着利用 shuffle 算法打乱这个列表顺序并从中截取所需数量的元素作为最终的结果集。
下面是一个具体的实现方案:
```lua
function getRandomUniqueNumbers(minValue, maxValue, count)
local numbers = {}
-- 构建[minValue,maxValue]区间内所有的整数数组
for i = minValue, maxValue do
table.insert(numbers, i)
end
-- Fisher-Yates Shuffle算法用于洗牌
for i = #numbers, 2, -1 do
local j = math.random(i)
numbers[i], numbers[j] = numbers[j], numbers[i]
end
-- 返回前count个元素组成的子序列
return {unpack(numbers, 1, count)}
end
```
此方法先建立了一个完整的候选数字集合 `numbers` ,再通过Fisher-Yates Shuffle(也称为Knuth Shuffle)的方式充分混合这些数字的位置关系,最后提取出前面部分长度等于所期望的数量 `count` 的连续片段作为输出结果[^1]。
阅读全文
相关推荐












