2013-05-05 63 views
2

我需要生成一個介於.0000001和1之間的隨機數,我一直在使用rand(1),但這隻給了我4個小數點,還有其他方法可以做到這一代嗎?Octave中的隨機數

謝謝!

+0

您確定4位小數點是真實精度,並且在顯示過程中不是四捨五入嗎? – 2013-05-05 06:48:35

回答

4

Octave docs

在默認情況下,八度顯示人類可讀形式(與矩陣「鬆」格式配對選項「短」)5個顯著數字。

所以這可能是一個問題,你的方式印刷價值而不是價值本身。

除了short之外,該頁面還顯示其他輸出格式,您可能要查找的格式爲long,其中包含15位有效數字。

並且也可以被設置爲每hereoutput_precision

old_val = output_precision (7) 
disp (whatever) 
old_val = output_precision (old_val) 
0

設置output_precision 7,它應該是好的:)

0

設置輸出精度雖然不會幫助因爲理論上該數字仍然可以小於.0000001,但您只會顯示前7位數字。最簡單的方法是:

req=0; 
while (req<.0000001) 
req=rand(1); 
end 

這可能會讓你卡在循環中,但它會產生正確的數字。要顯示所有小數點,您還可以使用以下命令:

format long 

這會顯示15位小數。要切換回去:

formay short