質問

を設定できます。利用の場合arc4random()?例えばく50~100ます。

役に立ちましたか?

解決

としては、下記の他の記事で指摘し、それが使用arc4random_uniformに優れています。 (この答えが最初に書かれたとき、arc4random_uniformは利用できませんでした)。 arc4random() % xのモジュロバイアスを回避に加えて、それはまた、短期間に再帰的に使用arc4randomを播種問題を回避します。

arc4random_uniform(4)
0、1、2または3はこのようにあなたが使用することができます生成されます。

arc4random_uniform(51)

単に50&100(両端を含む)の間の範囲を得るために結果に50を追加します。

他のヒント

JohnKコメント時に展開します。

あなたがあった乱数を返すために、次の関数を使用することが示唆されています

arc4random_uniform(51)
0の範囲の50乱数を戻します。

次に、あなたのようなこれにあなたの下限を追加することができます:

arc4random_uniform(51) + 50
50の範囲の100乱数を戻します。

我々はarc4random_uniform(51)arc4random() % 51を使用する理由は、モジュロバイアスを避けるためです。これは、次のようにmanページで強調表示されます:

  

arc4random_uniform(UPPER_BOUND)は以下UPPER_BOUNDより均一に分布した乱数を返します。上限が2のべき乗でない場合、それは「モジュロバイアス」を回避するようarc4random_uniform()は `` arc4random()%UPPER_BOUND「」のような構成を上推奨されます。

一言で言えば、あなたが生成され、より均等に分散乱数を取得します。

int fromNumber = 10;
int toNumber = 30;
int randomNumber = (arc4random()%(toNumber-fromNumber))+fromNumber;

randon number1030を生成する、すなわち11,12,13,14......29

あなたは範囲でランダムな値を生成するために、このコードを使用することができます:

//range from 50 to 100
int num1 = (arc4random() % 50) + 50; or
int num1 = arc4random_uniform(50) + 50;

//range from 0-100
int num1 = arc4random() % 100; or
int num1 = arc4random_uniform(100);

でスウィフトあなたが( @Justyn にの答えに触発さ)これを使用することができます。

func generateRandomKey(fromRange rangeFrom:Int, toRange rangeTo:Int) -> Int{

    let theKey = arc4random_uniform(UInt32(rangeTo - rangeFrom)) +  UInt32(rangeFrom)
    return Int(theKey)
}

は常にあなたのランダムな範囲の整数を与えるでしょう。

多くの状況で10~30意味ル(10および30)...

int fromNumber = 10;
int toNumber = 30;
toNumber ++;
int randomNumber = (arc4random()%(toNumber-fromNumber))+fromNumber;

通知の違いtoNumber-fromNumberは21...(20+1)を利回りの結果が0~20(オールインクルーシがfromNumber(10)の成果に10~30を取得するために使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top