我正在讀取/ dev/urandom中的隨機字節,並且我想將它隨機地浮出。我將如何做到這一點?我可以使用ord()將該字節轉換爲數字,它介於0和255之間。將隨機字節(0-255)轉換爲PHP中的浮點數?
很明顯,255是1.0,127是0.5和0是0.0,但是如何計算其餘值?另外,我認爲一個字節不足以提供很高的精度?我應該爲此使用多少個字節?
我正在讀取/ dev/urandom中的隨機字節,並且我想將它隨機地浮出。我將如何做到這一點?我可以使用ord()將該字節轉換爲數字,它介於0和255之間。將隨機字節(0-255)轉換爲PHP中的浮點數?
很明顯,255是1.0,127是0.5和0是0.0,但是如何計算其餘值?另外,我認爲一個字節不足以提供很高的精度?我應該爲此使用多少個字節?
嘗試簡單的線性關係
$f = $r/255.0;
其中$ r是隨機字節,和$ f是隨機浮點數。
這樣,當$ R = 255,$ f是1.0和當$ R = 127,$ f爲0.498
獲得了R = 127將需要不同的關係0.5。
既然你想127是0.5,我想你想
$float = round($byte/255,1)
嗯,你只是想數字的隨機序列?如果是這樣,只需使用http://php.net/mt_rand
$int = mt_rand(0, 1000);
$float = mt_rand(0, 1000)/1000.0;
$float_more_precise = mt_rand(0, 100000)/100000.0;
如果你想全精度float
可以提供,那麼你就需要24位或三個字節:
$float = ($b1 | ($b2 << 8) | ($b3 << 16))/(float)(1 << 24);
然而,PHP的文檔是有點模糊細節如此,如果你需要一個長度爲64位的double
而不是float
的32位,那麼你需要53位。