【问题标题】:Repeatable random data generation in Swift 4 [duplicate]Swift 4 中的可重复随机数据生成 [重复]
【发布时间】:2018-04-19 22:47:12
【问题描述】:

我正在用 Swift 4 编写测试。我想生成数千行测试输入数据。我希望测试输入数据是随机的。

但我希望我的测试是可重复的:每次运行所有测试都需要生成相同的数据。

这是如何在 Swift 中实现的?在 Java 中,我一直依赖于 Apache commons RandomDataGenerator。我探索了arc4randomdrand48,但这些似乎无法提供我需要的可重复性。

【问题讨论】:

  • 我不明白“drand48 [不] 如何提供可重复性”。它对我有用。

标签: swift random generator


【解决方案1】:

Swift 没有原生随机数生成功能。不过,您可以从 Swift 调用 C 库函数。 C 随机数库函数的任何页面都会向您描述它们。

例如,您可以每次都使用相同的常量播种 srand48,然后调用 drand48 来获取您的号码。

(1...3).forEach {_ in
    srand48(100)
    (1...3).forEach {_ in print(drand48())}
}
/*
 // spot the repetition:
 0.25105890266514
 0.208948404851498
 0.940927909958315
 0.25105890266514
 0.208948404851498
 0.940927909958315
 0.25105890266514
 0.208948404851498
 0.940927909958315
*/

其他一些 C 库函数在 Swift 中不可用,因此您必须用 C 编写那部分代码。没什么大不了的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2015-03-26
    • 2012-12-17
    相关资源
    最近更新 更多