我已经看到这个问题了很多但从未见过真正的具体答案.所以我将在这里发布一个,希望能帮助人们理解为什么在使用随机数生成器时会出现"模数偏差",就像rand()在C++中一样.
我试图通过使用随机索引arc4random来生成随机索引来访问数组.如果我的"术语的技术用法"不正确,我很抱歉,因为我对开发场景很新.
var backLeft = ["Clear","Drop","Smash"];
var i = (arc4random()%(3))
var shot = backLeft[i]
Run Code Online (Sandbox Code Playgroud)
这给了我第三行的错误,
Could not find an overload for 'subscript' that accepts the supplied arguments.
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用,
var i = 2
var shot = backLeft[i]
Run Code Online (Sandbox Code Playgroud)
然后它没有给我任何问题.来自php背景,我似乎无法弄清楚这里出了什么问题.
谢谢!:) PS:我在Swift Playground里面的XCODE 6上尝试这个
我正在尝试使用Swift 4.2+通过Int.random()函数生成带种子的随机数,但是没有给定的实现允许带给随机数生成器的实现。据我所知,唯一的方法就是创建一个新的符合RandomNumberGenerator协议的随机数生成器。是否有人建议采用更好的方法,或者是否有符合RandomNumberGenerator的类且具有播种功能的实现,以及如何实现?
另外,在寻找解决方案时,我看到了两个函数srand并drand提到了几次,但是从提到它的频率来看,我不确定使用它是否不好,而且我也找不到关于它们的任何文档。
我正在寻找最简单的解决方案,不一定是最安全或最快的性能解决方案(例如,使用外部库并不理想)。
更新: “播种”是指我将种子传递给随机数生成器,以便如果我将同一种子传递给两个不同的设备或在两个不同的时间传递,则生成器将产生相同的数字。目的是我为应用程序随机生成数据,而不是将所有数据保存到数据库中,而是想保存种子,并在每次用户加载应用程序时使用该种子重新生成数据。