Skip to content

deblinux-dev/Alternative_Lua_Pseudo-Random_Integer_Generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Как использовать?

Просто скопируйте 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))

API (Функции)

Вот все, что умеет этот модуль.

RandomGenerator.new([seed])

Создает и возвращает новый экземпляр генератора.

  • seed (опционально): Число, которое будет использоваться как начальное значение. Если не указать, генератор постарается создать уникальный seed на основе текущего времени.
-- Генератор с уникальным (почти всегда) сидом
local rng1 = RandomGenerator.new()

-- Генератор с фиксированным сидом
local rng2 = RandomGenerator.new(42)

rng:randomInt(min, max)

Возвращает случайное целое число в диапазоне от min до max, включая обе границы.

local dice = RandomGenerator.new()

-- Кидаем кубик d6
local roll = dice:randomInt(1, 6)
print("Выпало:", roll)

-- Если перепутать min и max
print(dice:randomInt(100, 1)) -- вернет число от 1 до 100

rng:randomFloat([min], [max])

Возвращает случайное дробное (с плавающей точкой) число.

  • Если вызвать без аргументов, вернет число в диапазоне [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)

rng:setSeed(seed)

Меняет сид у уже существующего генератора. Это "сбрасывает" его последовательность на начало новой, соответствующей новому сиду. Очень полезно для "переигровки" уровня в игре с той же генерацией.

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))

rng:getSeed()

Возвращает текущее внутреннее состояние (сид) генератора. Полезно, если вы хотите сохранить "точку" в последовательности случайных чисел, чтобы позже к ней вернуться.

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)) -- будет то же число, что и после сохранения

About

Генератор псевдослучайных целых чисел на Lua без дополнительных модулей (альтернатива math.random).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages