2

次の式で各クライアントに長いユーザー ID を与える Android アプリを作成しています。

long userID = (long) (Math.random() * 2 * Long.MAX_VALUE - Long.MAX_VALUE);

MAX_VALUE を正しく利用していますか。つまり、考えられるすべての long 値を利用していますか?

10,000、100,000、または 100 万のユーザーで 2 つのユーザー ID が重複する可能性はどのくらいですか? どうすればこれを計算できますか?

4

3 に答える 3

7

以下のいずれかを使用できます。

  1. ランダムを使用して長いユーザー ID を取得する代わりに、現在の日付と時刻 (ミリ秒単位) を使用します。

  2. ランダムな UUID を使用する

于 2013-02-06T11:58:02.797 に答える
6

https://github.com/bigfatsea/SUIDシンプルな一意識別子

136 年後に同じインスタンスで重複した ID が予想される場合がありますが、中小規模のプロジェクトには十分です。

例:

long id = SUID.id().get();
于 2014-05-23T17:05:18.963 に答える
0

を使用してランダムUUIDを生成できますrandomUUID()

ドキュメンテーション

于 2013-02-06T11:56:45.403 に答える