10人の生成された回答のグループ間で一致してはならない10個の一意の番号を生成するためのアプローチはどうあるべきですか?
質問する
358 次
2 に答える
3
これには素晴らしい解決策があります。1 から 10 の数字を 10 人の異なる人に無作為に与える必要があると仮定しています (ただし、10 (またはそれ以上) の異なる連続していない数字がある場合でも、原則は機能します)。
- 数字を配列に並べます。
- シャッフル アルゴリズムを使用して、配列内の要素をシャッフルします。
- (シャッフルアルゴリズム: http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle )
- 配列から最初の 10 個の値を読み取り、それらを 10 人のそれぞれに割り当てます。
于 2012-04-13T15:06:38.937 に答える
2
OS 機能を使用して GUID (グローバル一意識別子) を生成できます。
GUID は、次のような 32 桁の 16 進数です( GUID ウィキペディア{21EC2020-3AEA-1069-A2DD-08002B30309D}
の記事から恥知らずに盗用されました)。つまり、128ビットの数値になります。現在、邪魔な文字がすべて含まれていますが、余分な文字を削除して16進数から変換し、それを単純な数値として扱うことを妨げるものは何もありません.
実際的な理由から、C99 などの一部の言語では、128 ビットの数値は少し扱いにくいことに注意してください。ただし、コンパイラ拡張機能 (GCC には__uint128_t
) を使用したり、別の方法で処理したりできます。
于 2012-04-13T20:31:47.537 に答える