Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift rand()不是随机的大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
今天是我与 Swift的第一天,我遇到了一个问题.我使用rand生成一个随机数,但每次运行代码时它都会给我相同的结果.

@H_272_5@main.swift:

import Foundation

var player = Player()

for _ in 1..6 {
    println(player.kick())
}

player.swift:

import Foundation

class Player {
    var health = 25
    var xp = 15
    var upgrades = ["kick": 0,"punch": 0]

    func kick() -> Int {
        let range = (3,7)
        let damage = Int(rand()) % (range.1 - range.0) + range.0 + 1
        return damage
    }

    func punch() -> Int {
        let range = (4,6)
        let damage = Int(rand()) % (range.1 - range.0) + range.0 + 1
        return damage
    }
}

每次运行代码时,都会记录这些数字:

7
5
5
6
6

我也试过这个:Int(arc4random(range.1 – range.0))range.0 1但它说它找不到接受提供的参数的重载

我不知道为什么会发生这种情况.我很感激一些帮助,谢谢!

解决方法

你永远不应该使用rand(),使用arc4random – 它是一个更好的生成器.如果你检查它的man-pages,你会发现它有一个名为arc4random_uniform()的整数范围生成器形式,当模数不是2的幂时你应该使用它来避免模偏差.我相信以下就是你的想要,它在操场上对我有用:

let damage = arc4random_uniform(UInt32(range.1 - range.0) + 1) + UInt32(range.0)

1是因为arc4random_uniform()的上端是非包含的.如果您的范围是(4,7),则应该出现4,5,6和7.

大佬总结

以上是大佬教程为你收集整理的Swift rand()不是随机的全部内容,希望文章能够帮你解决Swift rand()不是随机的所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。