Засеянные случайные числа с верхней границей в Swift 3?

Есть ли способ запустить генератор случайных чисел, а также указать верхнюю границу в Swift 3?


person BCRwar3    schedule 01.01.2017    source источник
comment
Если вы заполняете генератор случайных чисел, не используете ли вы неправильный генератор случайных чисел? arc4random_uniform не требует заполнения.   -  person matt    schedule 02.01.2017
comment
Да, но проект, над которым я работаю, требует запуска генератора случайных чисел. (Я пытаюсь использовать алгоритм шума Перлина в Swift 3)   -  person BCRwar3    schedule 02.01.2017
comment
Как создать случайное число в Apple Swift язык?   -  person clearlight    schedule 02.01.2017
comment
Что ж, распространенный способ — использовать arc4random_uniform("upper bound"). Это решает проблему верхней границы, но это генератор случайных чисел без заполнения. Также существует srand48("seed"), он устанавливает семя, а затем вы можете использовать drand48() для создания случайного числа от 0,0 до 1,0, это решает проблему заполнения, но не позволяет вам создавать число вне диапазона от 0,0 до 1,0.   -  person BCRwar3    schedule 02.01.2017
comment
Никогда не использовал drand48(), но нельзя ли просто умножить его вывод от 0,0 до 1,0 на верхнюю границу?   -  person Ali Beadle    schedule 02.01.2017


Ответы (1)


Наиболее удобные генераторы случайных чисел в Swift находятся в GameKit. Это генерирует случайные целые числа от -10 до 10 (включительно):

import GameKit
let source = GKARC4RandomSource(seed: Data(bytes: [42]))
let random = GKRandomDistribution(randomSource: source, lowestValue: -10, highestValue: 10)

for _ in 0..<10 {
    print(random.nextInt())
}
person Code Different    schedule 02.01.2017