Мне нравится новая вещь Swift 4.2 RandomNumberGenerator, но я не вижу в ней возможности начального числа. Я что-то упускаю или есть ли вообще способ засеять эти генераторы, возможно, вызвав базовую низкоуровневую функцию? У меня много кода, который использует генераторы чисел по умолчанию для числовых типов по умолчанию, и теперь мне нужно убедиться, что все ведет себя точно так же между запусками с минимальными изменениями кода, насколько это возможно.
Есть ли способ засеять генератор случайных чисел Swift 4.2
Ответы (2)
Вся идея новой архитектуры состоит в том, что любой генератор можно заменить, просто приняв протокол RandomNumberGenerator. Поэтому, если вам нужно повторяющееся семя, используйте собственный алгоритм генератора случайных чисел.
person
matt
schedule
17.11.2018
Я думаю, что задается вопрос ... Как использовать разные начальные числа для вызовов генератора случайных чисел? Думаю, ответ заключается в том, что Swift выполняет пересев за вас.
- person Andrew; 20.09.2019
Если вам нужна воспроизводимость через явное заполнение, вы можете использовать GameplayKit
реализацию Mersenne Twister:
import Cocoa
import GameplayKit
let mt = GKMersenneTwisterRandomSource.init(seed: 12345)
for _ in (1...5) {
print(mt.nextUniform())
}
person
pjs
schedule
17.11.2018