2

.0000001 から 1 の間の乱数を生成する必要があります。rand(1) を使用していますが、小数点以下 4 桁しか得られません。この生成を​​行う他の方法はありますか?

ありがとう!

4

3 に答える 3

4

オクターブのドキュメントから:

デフォルトでは、Octave は 5 桁の有効桁数を人間が読める形式で表示します (オプション 'short' は行列の 'loose' フォーマットとペアになっています)。

したがって、値自体ではなく、値を出力する方法に問題がある可能性があります。

その同じページには、 に加えて他の出力形式がshort表示されます。調べたいのはで、有効数字はlong15 桁です。

また、次のoutput_precisionように設定できるものもあります

old_val = output_precision (7)
disp (whatever)
old_val = output_precision (old_val)
于 2013-05-05T06:50:02.250 に答える
0

ただし、出力精度を設定しても、理論上は .0000001 未満になる可能性がありますが、最初の 7 桁しか表示されないため、役に立ちません。最も簡単な方法は次のとおりです。

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

これによりループに陥る可能性がありますが、正しい数値が生成されます。すべての小数を表示するには、次のコマンドも使用できます。

format long

これにより、小数点以下 15 桁が表示されます。元に戻すには:

formay short
于 2013-05-07T04:43:58.143 に答える