Skip to content
/ LRS Public

Библиотека для генерации псевдослучайных чисел на основе Линейных рекуррентных последовательностей

License

Notifications You must be signed in to change notification settings

KubEF/LRS

Repository files navigation

Библиотека для генерации псевдослучайных чисел

Генератор основан на линейных рекуррентных последовательностях в $\mathrm{F_{256}}$. Для его инициализации необходимо подать на вход коэффициенты $a_0, \dots, a_{k-1}$ , свободную константу $c$ и набор первых членов последовательности $x_0,\dots, x_{k-1}$ ($a_i, x_i \in \mathrm{F_{256}}$, что для пользователя означает, что это целые числа из отрезка $[0, 255]$). функция GetRandom() генерирует число по правилу $x_{n+k} = \displaystyle\sum_{i=0}^{k-1} a_i \cdot x_{n+i} + c$ и выдавать число из отрезка $[0, 255]$.

Пример использования

var generator = new Generator(new int[] {1, 2, 3, 4}, 5, new int[] {6, 7, 8, 9});
//Количество коэффициентов обязано совпадать с количеством первых членов прогрессии.
int rnd1 = generator.GetRandom();
int rnd2 = generator.GetRandom();
int rnd3= generator.GetRandom();
// Получим по итогу 3 псевдослучайных числа

Нюансы

Важно отметить, что после инициализации при одинаковом наборе входных данных будут одинаковые результаты. И не все входные данные будут действительно давать непредсказуемый результат.

Сборка

Так как проект ссылается на другой мой проект, то после клонирования репозитория необходимо будет так же прописать команду

git submodule update --init

About

Библиотека для генерации псевдослучайных чисел на основе Линейных рекуррентных последовательностей

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages