短いシーケンスでランダムに「感じる」乱数を作成する方法を見つけようとしています。これはクイズゲーム用であり、4つの選択肢があり、ソフトウェアは、他の3つを気を散らすもので埋める前に、正しい答えを入れる4つの場所の1つを選択する必要があります。
明らかに、arc4random % 4
長いシーケンスでは十分にランダムな結果が作成されますが、短いシーケンスでは、同じ番号の5つまたは6つが連続して返される可能性があります(頻繁に発生します!)。これは私が避けようとしていることです。
また、「同じ正方形を2回選択しないでください」と単純に言いたくはありません。これは、最初の質問を除くすべての質問に対して3つの可能な回答しか得られないためです。現在、私は次のようなことをしています。
bool acceptable = NO;
do {
currentAnswer = arc4random() % 4;
if (currentAnswer == lastAnswer) {
if (arc4random() % 4 == 0) {
acceptable = YES;
}
} else {
acceptable = YES;
}
} while (!acceptable);
私が見落としているこれに対するより良い解決策はありますか?