Я бы не пытался генерировать случайные числа в SQL, когда так легко получить некоторые реальные случайные числа, вставить их в таблицу или в вашу хранимую процедуру.
Перейти к https://www.fourmilab.ch/hotbits/secure_generate.htmlчтобы получить 256 случайных битов в шестнадцатеричном формате, сгруппируйте цифры по 4 за раз, преобразуйте в десятичные целые числа и затем используйте первые 100 чисел в качестве ключей.
У вас будет повторяемая последовательность, и вы можете сделать столько истинныхслучайные последовательности по мере необходимости.
Если вам нужны повторяющиеся псевдослучайные числа с равномерным распределением, применяется тот же принцип.Просто используйте другой источник для чисел.Например, вы можете написать скрипт Python, который использует включенный модуль random
для генерации ваших чисел.
Что касается использования SQL, если вы правильно структурируете свою БД, это просто.В этом случае, поскольку я строю случайную таблицу один раз и использую ее для запросов более одного раза, я бы создал таблицу, содержащую первичные ключи, а не только генерируемые случайные числа.Или, если бы я собирался повторить это с разными наборами чисел, я бы построил таблицу отношений (как в моделировании ER), которая связывает таблицу случайных чисел с таблицей, которую я выбираю.Я не навязываю все в SQL, но сгенерирую таблицу случайных чисел и построю таблицу отношений, используя язык сценариев.
В приведенном выше примере вам нужно 100 выборок, поэтому таблица случайных выборок будет содержать 100 первичныхключи выбираются внешним скриптом.Каждый раз, когда вы запускаете выборку, вы получаете одни и те же записи, пока не измените таблицу случайной выборки.Чтобы изменить таблицу, создайте дамп первичных ключей таблицы, которую вы хотите отобрать, затем запустите сценарий для случайного выбора 100, сгенерировав 100 чисел от 1 до общего числа первичных ключей.Если вы используете такой инструмент, как Python, вы можете получить однородные случайные числа, гамма-распределение, гауссову, нормаль логарифма, парето и другие.