arc4random_uniform() の範囲内で乱数を生成するにはどうすればよいでしょうか? 質問する

arc4random_uniform() の範囲内で乱数を生成するにはどうすればよいでしょうか? 質問する

このコードビットでの私の目標は、サイコロを 2 つランダムに振ることです。ご存知のとおり、通常のサイコロには 6 つの面しかありません。そこで、arc4random_uniform(UInt32) にアクセスするために Foundation をインポートしました。ランダムに 0 が出ないように (1..7) の範囲を使用しようとしましたが、エラーが返され、あまりうれしくありませんでした。次のことを試しました。

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

しかし、それは戻ってきた

指定された引数を受け入れる 'init' のオーバーロードが見つかりませんでした

これが、私を助けてくれる素晴らしいデブたちにとって十分な情報であることを願っています :)

これはSwiftの練習のためにプレイグラウンドでやっているだけなので注意してください。これを学ぶことは必須ではありません。実際のアプリを構築する前にちょっといじっているだけです: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

これは、「範囲 $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.")

ベストアンサー1

私はあなたがすべきだと信じています

dice1 = arc4random_uniform(6) + 1;

1 から 6 の範囲を取得します。ただし、私は iOS Objective C を扱ったことがなく、Swift 言語の知識もありません。ランダム メソッドは 0 から 5 の間の値を返す必要があり、+ 1 は 1 から 6 の間の値になります。

10~30の範囲が必要な場合は、次のようにします。

int random = arc4random_uniform(21) + 10;

おすすめ記事