2012-04-13 19 views
0

10人の生成された回答のグループの中で一致してはならない10個の固有の番号を生成する方法は?ランダム番号生成

+1

GUIDはどうですか? – cha0site

+0

アルファベットまたは特殊文字は使用できません.0-9の場合にのみ使用でき、10個の乱数の合計が最小でなければなりません。 – Santosh

+3

GUIDは単なる数値です。分離したダッシュで16進数で表示する必要はありません。 – hammar

答えて

3

これは素晴らしいソリューションです。私はランダムな方法で10人から10人までの人数を与えなければならないと仮定しています(ただし、10(またはそれ以上)の異なる非連続数がある場合でも原則が適用されます)。

  • 数字を配列に配置します。
  • シャフリングアルゴリズムを使用して、配列内の要素をシャッフルします。
  • 10人の各々に割り当てる配列から最初の10の値を読み取ります。
1

OS機能を使用してGUID(グローバルに一意の識別子)を生成できます。

GUIDは、{21EC2020-3AEA-1069-A2DD-08002B30309D}(恥知らずにGUID wikipedia articleから盗まれた)のような32桁の16進数です。それは128ビットの数になります。今、それは途中でそれらのすべてのそれらの迷惑な文字を持っていますが、無関係な文字を削除し、16進数から変換し、それを平凡な数字として扱うことを止めるものは何もありません。

実用上の理由から、128ビットの数値はC99など一部の言語では扱いにくいことに注意してください。しかし、コンパイラの拡張機能(GCCは__uint128_t)を使用したり、他の方法で処理したりすることができます。