2009-12-21 83 views
0

我正在讀取/ dev/urandom中的隨機字節,並且我想將它隨機地浮出。我將如何做到這一點?我可以使用ord()將該字節轉換爲數字,它介於0和255之間。將隨機字節(0-255)轉換爲PHP中的浮點數?

很明顯,255是1.0,127是0.5和0是0.0,但是如何計算其餘值?另外,我認爲一個字節不足以提供很高的精度?我應該爲此使用多少個字節?

回答

2

嘗試簡單的線性關係

$f = $r/255.0; 

其中$ r是隨機字節,和$ f是隨機浮點數。

這樣,當$ R = 255,$ f是1.0和當$ R = 127,$ f爲0.498

獲得了R = 127將需要不同的關係0.5。

0

既然你想127是0.5,我想你想

$float = round($byte/255,1) 
2

嗯,你只是想數字的隨機序列?如果是這樣,只需使用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; 
0

如果你想全精度float可以提供,那麼你就需要24位或三個字節:

$float = ($b1 | ($b2 << 8) | ($b3 << 16))/(float)(1 << 24); 

然而,PHP的文檔是有點模糊細節如此,如果你需要一個長度爲64位的double而不是float的32位,那麼你需要53位。