2015-10-10 63 views
1

問:PHP與以上熵uniqid功能

當使用PHP的uniqid功能與更多的熵設置15個字符總是在我運行一個句點。第15個角色保證始終是一個點?

後續:

感謝@FuzzyTree答案。

我也調查了一下,所以對於那些感興趣的php_combined_lcg()函數生成一個介於0和1之間的隨機數(如0.862215793)。小數前有一個數字的原因是因爲它乘以10(在此示例中變爲8.62215793)。這可以防止總是作爲第14個字符的0。

回答

2

是的,如果more_entropy設置爲true,則第15個字符保​​證爲點。

php source for uniqid

if (more_entropy) { 
    uniqid = strpprintf(0, "%s%08x%05x%.8F", prefix, sec, usec, php_combined_lcg() * 10); 
            ^hard coded dot here preceeded by 14 characters 
} else { 
    uniqid = strpprintf(0, "%s%08x%05x", prefix, sec, usec); 
} 
+0

大鞭出源時該文檔沒有提供:) – JimL

+0

@kojow小數點之前的5個字符是從含有微秒的時間戳生成 – FuzzyTree