がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

駄目なUUIDv4実装

「実装によってはUUID4が重複しうる」って話を聞いて「じゃぁ駄目な実装を書いてみよう」と思いました(笑
珍しく「徹頭徹尾、非実用」です(笑

<?php
mt_srand(time());
printf("%08x-%04x-4%03x-%04x-%012x\n"
    , mt_rand(0, 0xffffffff)
    , mt_rand(0, 0xffff)
    , mt_rand(0, 0xfff)
    , mt_rand(0, 0x3fff) + 0x8000
    , mt_rand(0, 0xffffffffffff)
    );

これだと、同じ秒で(別マシンだろうがなんだろうが)同タイミングで作成すると、ちゃんと(?)重複します(笑
いやまぁ「普通に考えて、最低限 random_bytes() だろ」とか思うのですが、そこはほら、実験という名のお遊びなのでwww

なお

mt_srand(time());

がキモになりますので、絶対に省略しないでください。省略されると、ちゃんと(?)重複しません(笑

うんなんか書いたら満足したwww