Есть ли способ затравить генератор случайных чисел Swift 4.2 - PullRequest
0 голосов
/ 17 ноября 2018

Мне нравится новая вещь Swift 4.2 RandomNumberGenerator, но я не вижу возможности для начала там.Я что-то упустил или есть какой-нибудь способ запустить эти генераторы, возможно, вызывая базовую низкоуровневую функцию?У меня много кода, который использует генераторы чисел по умолчанию для типов чисел по умолчанию, и теперь мне нужно убедиться, что все работает одинаково между запусками с минимальным изменением кода.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Если вам нужна воспроизводимость посредством явного заполнения, вы можете использовать реализацию GameplayKit Mersenne Twister:

import Cocoa
import GameplayKit

let mt = GKMersenneTwisterRandomSource.init(seed: 12345)

for _ in (1...5) {
  print(mt.nextUniform())
}
0 голосов
/ 17 ноября 2018

Вся идея новой архитектуры заключается в том, что любой генератор можно заменить, просто приняв протокол RandomNumberGenerator. Поэтому, если вам нужно повторяемое начальное число, используйте собственный алгоритм генератора случайных чисел.

...