1

次のように arc4random_uniform() を使用して配列をシャッフルしています。

int count = [arr count];
for (int i = 0; i < count; i++) {
   int n = arc4random_uniform(count - i) + i;
   [arr exchangeObjectAtIndex:i withObjectAtIndex:n];
}

配列には 32 枚のトランプが含まれており、多くのユーザーが同じカード シーケンスを繰り返し見ていると報告しています。配列の作成手順は次のとおりです。

  1. すべてのカードを特定の順序で配列に追加します。
  2. 上記のループを使用して配列をシャッフルします。

ドキュメントから、arc4random_uniform はシードを必要としないことを理解しています。だから私の質問は:

  1. arc4random_uniform によって生成されたシーケンスが繰り返される原因は何ですか?
  2. 生成された最後のシーケンスを保存する以外に、それが繰り返される可能性を最小限に抑えるためにできることはありますか? 乱数に基づいて何度もシャッフルするのは良い考えですか?
4

1 に答える 1