numberを2回繰り返さないarc4random()をどのように記述しますか?arc4random()の番号に1回使用
たとえば、私はスイッチとボタンを使用しています。私は同じarc4random番号を再利用して生成したくありません。私がarc4randomの世代番号2,4,42,32,42 ... を持っていたら、私は再び42が出現したくありません。
どうすればこの問題を回避できますか?
switch (arc4random() % 50)
{
case 1:
text.text = @"You are silly boy";
break;
case 2:
text.text = @"Well, you very very silly"];
break;
case 3:
text.text = @"stop being silly"];
break;
case 4:
[text.text = @"silly... silly"];
break;
case 5:
text.text = @"what you silly boy"];
break;
...
case 0:
text.text = @"you silly"];
break;
}
どのくらいの頻度で繰り返すことはできませんか? –
Fisher-Yates:ここをクリックしてください:http://stackoverflow.com/questions/1858610/different-numbers-from-1-to-10/1858800#1858800 – paxdiablo
arc4randomの結果は、約20億の数。しかし、数値は(擬似)ランダムなので、%50を使用すると2つの同一の数値が連続して得られます。一意性を保証するには、他の戦略を使用する必要があります。 –