Существует ли какая-либо (простая) функция генерации случайных чисел, которая может работать без назначения переменных?Большинство функций, которые я читаю, выглядят так: current = next(current)
.Однако в настоящее время у меня есть ограничение (из SQLite), что я вообще не могу использовать никакие переменные.
Есть ли способ генерировать числовую последовательность (например, от 1 до max
) только с n
(текущий порядковый номер в последовательности) и seed
?
В настоящее время я использую это:
cast(((1103515245 * Seed * ROWID + 12345) % 2147483648) / 2147483648.0 * Max as int) + 1
с max
, равным 47, ROWID
быть n
.Однако для некоторых семян частота повторения слишком высока (3 уникальных из 47).
В моих требованиях повторение в порядке, пока оно не слишком много (<50%).Есть ли лучшая функция, которая отвечает моим потребностям? </p>
Вопрос имеет тег sqlite, но любой язык / псевдокод в порядке.
Ps: я пытался использовать Линейные конгруэнтные генераторы с некоторыми а / с / м триплетами и Seed * ROWID
как Seed
, но это не работает хорошо, это даже хуже.
РЕДАКТИРОВАТЬ: Я в настоящее время использую этот, но я не знаю, гдеэто из.Курс выглядит лучше моего:
((((Seed * ROWID) % 79) * 53) % "Max") + 1