Просто скопируйте arandom.lua в свой проект и подключите его там, где он вам нужен.
local RandomGenerator = require('arandom')-- 1. Создаем новый генератор. Можно без seed.
local rng = RandomGenerator.new()
-- 2. Генерируем числа.
local rng1 = RandomGenerator.new() -- Используем сид по умолчанию
for i = 1, 5 do
print(string.format("Случайное число [1, 100]: %d", rng1:randomInt(1, 6)))
end
print("Случайное дробное от 0 до 1:", rng:randomFloat())
-- 3. Создаем еще один генератор с конкретным seed для тестов.
local predictable_rng = RandomGenerator.new(12345)
print("Первое число из предсказуемой серии:", predictable_rng:randomInt(1, 1000))
print("Второе число:", predictable_rng:randomInt(1, 1000))Вот все, что умеет этот модуль.
Создает и возвращает новый экземпляр генератора.
seed(опционально): Число, которое будет использоваться как начальное значение. Если не указать, генератор постарается создать уникальный seed на основе текущего времени.
-- Генератор с уникальным (почти всегда) сидом
local rng1 = RandomGenerator.new()
-- Генератор с фиксированным сидом
local rng2 = RandomGenerator.new(42)Возвращает случайное целое число в диапазоне от min до max, включая обе границы.
local dice = RandomGenerator.new()
-- Кидаем кубик d6
local roll = dice:randomInt(1, 6)
print("Выпало:", roll)
-- Если перепутать min и max
print(dice:randomInt(100, 1)) -- вернет число от 1 до 100Возвращает случайное дробное (с плавающей точкой) число.
- Если вызвать без аргументов, вернет число в диапазоне
[0, 1). - Если указать аргументы, вернет число в диапазоне
[min, max).
local rng = RandomGenerator.new()
-- Получить случайный процент
local percentage = rng:randomFloat() -- например, 0.7345...
-- Случайная температура от -10.5 до +25.5 градусов
local temp = rng:randomFloat(-10.5, 25.5)Меняет сид у уже существующего генератора. Это "сбрасывает" его последовательность на начало новой, соответствующей новому сиду. Очень полезно для "переигровки" уровня в игре с той же генерацией.
local rng = RandomGenerator.new(123)
print(rng:randomInt(1, 1000))
print(rng:randomInt(1, 1000))
rng:setSeed(124)
print(rng:randomInt(1, 1000))
print(rng:randomInt(1, 1000))Возвращает текущее внутреннее состояние (сид) генератора. Полезно, если вы хотите сохранить "точку" в последовательности случайных чисел, чтобы позже к ней вернуться.
local rng = RandomGenerator.new()
print(rng:randomInt(1, 100))
print(rng:randomInt(1, 100))
-- Сохраняем состояние
local saved_state = rng:getSeed()
print(rng:randomInt(1, 100))
-- Возвращаемся к сохраненному состоянию
rng:setSeed(saved_state)
print(rng:randomInt(1, 100)) -- будет то же число, что и после сохранения