Свифт - Посевной arc4random_uniform? Или альтернатива?

Позвольте мне начать с того, что я пытаюсь достичь:

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

После нескольких экспериментов с drand48 (), rand () и arc4random () я решил использовать rand () для получения случайного числа и srand () для заполнения. Вот небольшой пример, упрощенный из того, что я делаю:

let seed: UInt32 = 10
srand(seed)
let start = 0
let end = 100
let randomNumber = Double(rand()) % (end + 1 - start) + start

Это работает. Учитывая то же самое семя, то же самое случайное число выходит. Выполнение нескольких расчетов randomNumber приводит к появлению нескольких различных случайных чисел. Повторный посев через srand снова запускает «случайность».

Единственным недостатком является rand (), который распределен неравномерно. На самом деле, я почти всегда получаю набор чисел, которые по большей части линейно растут.

Похоже, что arc4random_uniform будет генерировать больше равномерного случайного вывода, однако из моего исследования не представляется возможным заполнить arc4random, поскольку он запускается сам при первом вызове и не обязательно «предназначен» для внешней посадки.

Итак, мой вопрос; есть ли лучшая альтернатива srand () / rand (), которая все равно даст мне те же выходные данные для данного семени, но эти выходные данные распределены более равномерно?

Спасибо, Адам

Ответы на вопрос(2)

Ваш ответ на вопрос