一尘不染

如何在arc4random_uniform()的范围之间产生随机数?

swift

因此,我在此代码位中的目标是随机掷两个骰子,众所周知,您的普通骰子只有6个面,因此我导入了Foundation以访问arc4random_uniform(UInt32)。我尝试使用(1..7)的范围来避免随机获得0,但是返回了一个我不太喜欢的错误。我试图这样做:

dice1 = arc4random_uniform(UInt32(1..7))

但是那又回来了

找不到接受提供的参数的’init’的重载

我希望这是足够的信息,可以为您提供帮助,帮助您:)

请注意,我只是在操场上练习快速运动。我不必学习如何做到这一点。在我跳入构建实际应用程序之前,只是我动手了:D

//imports random number function
import Foundation
//creates data storage for dice roll
var dice1: UInt32 = 0
var dice2: UInt32 = 0
//counter variable
var i = 0
//how many times snake eyes happens
var snakeeyes = 0
 //how many times a double is rolled
var `double` = 0
//rolls dice 100 times
while i < 100{
    //from here
    //sets dice roll

这将返回错误“ Range $ T3”不能转换为UInt32

   dice1 = arc4random_uniform(1..7)
   dice2 = arc4random_uniform(1..7)
    //checks for snake eyes
    if dice1 == 1 && dice2 == 1 {
        snakeeyes = snakeeyes + 1

    }
    //checks for doubles
    if dice1 == dice2{
        `double` = `double` + 1
    }
    //increases counter
        i = i + 1
    //to here
}
println("You got Snake Eyes \(snakeeyes) times.")
println("You got Doubles, \(`double`) times.")

阅读 299

收藏
2020-07-07

共1个答案

一尘不染

我相信你应该做

dice1 = arc4random_uniform(6) + 1;

以获得1-6的范围。虽然我没有执行iOS目标C,但是我也不了解Swift语言。随机方法应返回0到5之间的值,而+ 1将使其变成1到6之间的值。

如果您需要一个介于10到30之间的范围,则只需

int random = arc4random_uniform(21) + 10;
2020-07-07