如何在IBM Swift Sandbox中播种rand()?

如何在IBM Swift Sandbox中播种rand()?,swift,random,ibm-swift-sandbox,Swift,Random,Ibm Swift Sandbox,我是StackOverflow的新手,所以如果有更好的方法发布一个问题,请纠正我,这是一个现有问题的具体案例 阿尔贝托·巴雷拉回答 与 这通常是完美的,但当我尝试它时,它会在每次运行时给出相同的数字序列,至少在半小时内 import Foundation import CoreFoundation let time = UInt32(NSDate().timeIntervalSinceReferenceDate) srand(time) print("Random number: \(ran

我是StackOverflow的新手,所以如果有更好的方法发布一个问题,请纠正我,这是一个现有问题的具体案例

阿尔贝托·巴雷拉回答

这通常是完美的,但当我尝试它时,它会在每次运行时给出相同的数字序列,至少在半小时内

import Foundation
import CoreFoundation

let time = UInt32(NSDate().timeIntervalSinceReferenceDate)
srand(time)
print("Random number: \(rand()%10)")
目前,每次跑步都会打印5张照片

有人在IBM沙箱中找到了这样做的方法吗?我发现random()和srandom()生成不同的数字序列,但每次运行都是相同的。我在基础、CopeFoundation、达尔文或Glibc中没有找到ARC4V随随者。< /P>
顺便说一句,我谦恭地建议声誉在1500以上的人创建一个标签IBM Swift Sandbox。

srand
正在按预期工作。如果您每次更改
let time=UInt32(NSDate().timeintervalncereferencedate)
中的值,而不是使用任何数字更改
NSDate().timeintervalncereferencedate
,它将输出随机数


也许这是一个缓存问题,它只是没有看到代码中的任何更改,也没有将其发送给重新编译:)

我不知道发生了什么,但今天它完全正常工作。所以我想问题已经得到了回答:

srand(UInt32(NSDate().timeIntervalSinceReferenceDate))
很好


(我想一定是发生了什么变化。它在两台不同的计算机上以相同的方式运行了大约10天(通过多次尝试生成相同的数字),这很奇怪。)

这是我们在沙箱中实现服务器端缓存的方式的问题;非确定性代码将持续返回相同的答案,即使它不应该返回相同的答案。我们现在已经禁用了它,每次运行都会得到不同的结果。我们目前正在研究更好的机制,以确保沙箱的可伸缩性


我还要看看那个标签

IBMSWIFT沙盒只是Linux上的一个开源Swift安装,其行为完全相同。我认为标签Linux是您需要的,这是一个很好的观点。但是,如果这是缓存问题或其他“浏览器中”问题,那么找到解决方案的人可以通过特定的标记找到彼此。我现在检查了它,上面写着“NSDate已完全实现”。感谢您撰写本文。我担心我会失去理智。沙箱很棒。速度快,重量轻。我喜欢在闲逛时使用Xcode。很高兴你喜欢它!我们追求的是快速简单的编程体验。我们也在对它进行定期的改进,所以希望随着时间的推移,它能继续变得更好。
srand(UInt32(NSDate().timeIntervalSinceReferenceDate))