モデル内のオブジェクトを識別するために、一意の64ビットキー(疑似)をランダムに生成したいと思います。システムのすべてのユーザー間で、キーをできるだけ一意にする必要があります(N個のキーを一緒に使用した場合の衝突の可能性を最小限に抑えます)。
データが安いので、通常のGUIDは今のところ問題外です:)。同じコンテキストで100万を超えるキーが必要になるとは思わないので、64ビットで十分だと思います(衝突の確率は約10e-7です)。
補足として、これらのキーのタプルを単一の64ビットキーにフォールド/ハッシュするスキームも必要になります。これも、適切に分散/一意である必要があります。
とにかく優れた(十分に分散された)ハッシュ関数が必要なので、GUIDを半分に折りたたんでも大丈夫ですか(GUIDの固定ビットを何らかの方法で考慮している可能性があります)?それとも、ローカルRNGを使用する方が良いですか?生成の空間/時間全体で一意性を最大化するためにRNGをシードするにはどうすればよいですか?どのくらい強力なRNGが必要ですか?
私は特に効率性(ある程度まで)を求めていませんが、確率が約束を守ることを本当に望んでいます!