如何使用php rand()
或其他方法從-0.0010到0.0010重新生成隨機小數?如何生成隨機正數或負數小數?
3
A
回答
5
返回任何可能數,由範圍相乘,並添加起始編號:
<?php
// rand()/getrandmax() gives a float number between 0 and 1
// if you multiply it by 0.002 you'll get a number between 0 and 0.002
// add the starting number -0.001 and you'll get a number between -0.001 and 0.001
echo rand()/getrandmax()*0.002-0.001;
?>
3
0
這將最大隨機NUMER -0.001
和+0.001
鴻溝rand()
之間
$random = ((rand()*(0.002/getrandmax()))-0.001)
// or without paranthesis:
$random = rand()*0.002/getrandmax()-0.001
0
$randselect=rand(0,(array_sum($adarray)*100000000));
$cumilativevalue=0;
foreach ($adarray as $key => $value) {
$cumilativevalue=$cumilativevalue+$value*100000000;
if($randselect<$cumilativevalue){$selectedad=$key;break;}
}
1
這使用了兩個rand()調用,但我認爲可讀性彌補了它的十倍。 第一部分是-1或+1。第二部分可以是0和+/-數字的限制之間的任何值。
$rand = (rand(0,1)*2-1)*rand(0, 100);
echo $rand;
除非在一個巨大的循環中需要大量的隨機數,否則您甚至不會注意到速度差異。我運行了一些測試(50.000次迭代),並通過我的函數獲得了一個隨機數大約0.0004毫秒。替代品大約有一半的時間,但是,除非你處於一個非常大的循環中,否則你可能更適合在其他地方進行優化。
速度測試代碼:
$start = microtime();
$loopCount = 50000;
for($i=0;$i<$loopCount;$i++)
{
(0*2-1)*rand(0, 100);
}
$end = microtime();
echo "Timing: ", ((($end-$start)*1000.0)/((float)$loopCount)), " milliseconds.";
相關問題
- 1. 隨機生成1或-1(正整數或負整數)
- 2. JavaScript隨機正數或負數
- 3. 生成隨機小數
- 4. 正確生成隨機數
- 5. 生成隨機數
- 6. 隨機數生成
- 7. 生成隨機數
- 8. 生成一個大於或小於前面的隨機數的隨機數
- 9. 在matlab中生成隨機負向正浮點數
- 10. 如何生成一個具有小數位的隨機數
- 11. 如何從短隨機數生成更長的隨機數?
- 12. 隨機數生成機制
- 13. 如何使用RNGCryptoServiceProvider生成非負數的隨機數(整數)C#
- 14. 生成隨機數的正確方法
- 15. 能否使用負數作爲隨機數生成的種子?
- 16. 隨機和負數
- 17. 如何並行生成隨機數字?
- 18. 如何生成一個隨機數
- 19. Matlab:如何生成僞隨機數
- 20. 如何生成隨機數列表?
- 21. J2ME:如何生成隨機數?
- 22. 如何從陣列生成隨機數
- 23. AS3 - 如何生成隨機數字?
- 24. 如何在django中生成隨機數
- 25. 生成隨機數據
- 26. Visual Basic生成隨機數
- 27. 生成一組隨機數
- 28. 隨機數的生成
- 29. 有關生成隨機數
- 30. 隨機數生成問題
是不是隻有21號的空間? – Fosco 2010-07-08 18:04:55
@Fosco這是一個無限數字的空間 – Maerlyn 2010-07-08 18:09:33