私のAndroidアプリでは、乱数を生成する必要があります.
私のアプリは LAN 内の多くの Android デバイスで実行され、乱数を使用して相互に通信します。LAN 内のどのアプリでも同じであってはならないようなランダムで一意の番号を生成したいと考えています。
ユーザーがデバイス内および LAN 全体で生成するたびに、一意である必要があります。
どんなアイデアでも、私は感謝します???
私のAndroidアプリでは、乱数を生成する必要があります.
私のアプリは LAN 内の多くの Android デバイスで実行され、乱数を使用して相互に通信します。LAN 内のどのアプリでも同じであってはならないようなランダムで一意の番号を生成したいと考えています。
ユーザーがデバイス内および LAN 全体で生成するたびに、一意である必要があります。
どんなアイデアでも、私は感謝します???
質問のコメントの説明を踏まえて、私がすることは次のとおりです。32ビット整数でビットを交換する(決定論的)スキームを構築します。好きなだけ交換してください。これを「スクランブラー」と呼びます。
次に、整数を数えるだけです。それぞれで「スクランブラー」を呼び出します。
一意性が保証され、高速になりますが、スワッピング スキームの決定論的な性質のため、暗号法で安全ではありません。ただし、一般に、これは統計的ランダム性が低いため、一様に分布した乱数が必要な場合 (モンテカルロなど) には使用しないでください。しかし、それはあなたの要件を満たすべきだと思います。
乱数を生成する方法は次のとおりです。
Random r = new Random();
int random = r.nextInt(100); // returns a value between 0 (incl) and 100 (excl)
Random r = new Random();
int random = r.nextInt(100) + 20; // returns a value between 20 (incl) and 120 (excl)
数値が一意である必要があるという問題に関しては、おそらく生成された各数値を何らかの方法で保存できます。次に、新しい乱数を描画するときに、新しい乱数が既に生成されているかどうか、保存された数値を確認します。その場合は、再描画します。
Java ランダム ドキュメント: http://docs.oracle.com/javase/6/docs/api/java/util/Random.html