如何在 IBM Swift 沙箱中播种 rand()?
How to seed rand() in IBM Swift Sandbox?
我是 Whosebug 的新手,所以如果有更好的方法 post 一个现有问题的特定案例,请纠正我。
阿尔贝托·巴雷拉回答了
How does one seed the random number generator in Swift?
和
let time = UInt32(NSDate().timeIntervalSinceReferenceDate)
srand(time)
print("Random number: \(rand()%10)")
总体上是完美的,但是当我在 The IBM Swift Sandbox 中尝试时,它每隔 运行 给出相同的数字序列,至少在 space 半小时内。
import Foundation
import CoreFoundation
let time = UInt32(NSDate().timeIntervalSinceReferenceDate)
srand(time)
print("Random number: \(rand()%10)")
目前,每个 运行 打印 5。
有没有人找到在 IBM Sandbox 中执行此操作的方法?我发现 random() 和 srandom() 产生不同的数字序列,但每个 运行 都相同。我没有在 Foundation、CoreFoundation、Darwin 或 Glibc 中找到 arc4random()。
顺便说一句,我谦虚地建议声誉超过 1500 的人创建一个标签 IBM-Swift-Sandbox.
srand
正在按预期工作。如果您每次在 let time = UInt32(NSDate().timeIntervalSinceReferenceDate)
中更改值而不是 NSDate().timeIntervalSinceReferenceDate
中的任何数字,它将输出随机数。
也许这是一个缓存问题,它只是没有看到代码中的任何更改,也没有发送它进行重新编译:)
我不知道发生了什么,但今天一切正常。所以我想问题已经得到解答:
srand(UInt32(NSDate().timeIntervalSinceReferenceDate))
工作正常。
(我认为一定有什么改变了。在大约 10 天的时间里,它在两台不同的计算机上表现相同(通过重复尝试生成相同的数字)......很奇怪。)
这是我们在沙盒中实现 server-side 缓存的方式的问题; non-deterministic 代码会不断地 return 相同的答案,即使它不应该有。我们现在已将其禁用,每个 运行 您应该会得到不同的结果。我们目前正在研究更好的机制以确保沙盒的可扩展性。
我也会看看那个标签!
我是 Whosebug 的新手,所以如果有更好的方法 post 一个现有问题的特定案例,请纠正我。
阿尔贝托·巴雷拉回答了 How does one seed the random number generator in Swift?
和
let time = UInt32(NSDate().timeIntervalSinceReferenceDate)
srand(time)
print("Random number: \(rand()%10)")
总体上是完美的,但是当我在 The IBM Swift Sandbox 中尝试时,它每隔 运行 给出相同的数字序列,至少在 space 半小时内。
import Foundation
import CoreFoundation
let time = UInt32(NSDate().timeIntervalSinceReferenceDate)
srand(time)
print("Random number: \(rand()%10)")
目前,每个 运行 打印 5。
有没有人找到在 IBM Sandbox 中执行此操作的方法?我发现 random() 和 srandom() 产生不同的数字序列,但每个 运行 都相同。我没有在 Foundation、CoreFoundation、Darwin 或 Glibc 中找到 arc4random()。
顺便说一句,我谦虚地建议声誉超过 1500 的人创建一个标签 IBM-Swift-Sandbox.
srand
正在按预期工作。如果您每次在 let time = UInt32(NSDate().timeIntervalSinceReferenceDate)
中更改值而不是 NSDate().timeIntervalSinceReferenceDate
中的任何数字,它将输出随机数。
也许这是一个缓存问题,它只是没有看到代码中的任何更改,也没有发送它进行重新编译:)
我不知道发生了什么,但今天一切正常。所以我想问题已经得到解答:
srand(UInt32(NSDate().timeIntervalSinceReferenceDate))
工作正常。
(我认为一定有什么改变了。在大约 10 天的时间里,它在两台不同的计算机上表现相同(通过重复尝试生成相同的数字)......很奇怪。)
这是我们在沙盒中实现 server-side 缓存的方式的问题; non-deterministic 代码会不断地 return 相同的答案,即使它不应该有。我们现在已将其禁用,每个 运行 您应该会得到不同的结果。我们目前正在研究更好的机制以确保沙盒的可扩展性。
我也会看看那个标签!