2019-01-09

UUIDの生成法

世界単位ユニークとされている識別子。

128bitの乱数らしい。

ネットでたまに、数学的にどれだけぶつかる可能性が低くて安心して使えるかというのが解説されてるのを見るけど、肝心のUUIDの生成法を解説してる記事を見たことない。

PostgresqlなんかはUUID型みたいのがあるけど、自動では作ってくれないし。

まあ、いまどきの言語なら高性能らしい乱数成ルーチンがあるから、それを使えばいいんだろうけど、問題はシード値だよな。

ゲームに使う乱数のシードなら、unix時刻+プロセスIDとか、環境依存数字をいくつかひっぱってくる程度でOKだろうけどUUIDに使うにはユニークさが足らないよな。

OSによっては安全乱数を取得する方法提供されてるから、それを使えばいいけど、どのプラットフォームでも共通で使える方法がなさそう。

この類の乱数が絡むのって、けっこう落とし穴があって素人自力でやるとバグったり安全性が低かったりするから、UUIDを生成する方法提供してほしい。

  • まず、現代のまともなプログラミング言語ならuuidの生成機能はある シードはurandom

    • 外部のライブラリで? 標準関数か、デファクトスタンダートくらいのライブラリが存在しないと安全性が判断できない。

      • もちろん標準で C/C++だと怪しいかもな(Boostが必要かもしれない) それ以外で存在しないならその言語は欠陥品だから捨てていいよ

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん