.0000001 から 1 の間の乱数を生成する必要があります。rand(1) を使用していますが、小数点以下 4 桁しか得られません。この生成を行う他の方法はありますか?
ありがとう!
オクターブのドキュメントから:
デフォルトでは、Octave は 5 桁の有効桁数を人間が読める形式で表示します (オプション 'short' は行列の 'loose' フォーマットとペアになっています)。
したがって、値自体ではなく、値を出力する方法に問題がある可能性があります。
その同じページには、 に加えて他の出力形式がshort
表示されます。調べたいのはで、有効数字はlong
15 桁です。
また、次のoutput_precision
ように設定できるものもあります。
old_val = output_precision (7)
disp (whatever)
old_val = output_precision (old_val)
ただし、出力精度を設定しても、理論上は .0000001 未満になる可能性がありますが、最初の 7 桁しか表示されないため、役に立ちません。最も簡単な方法は次のとおりです。
req=0;
while (req<.0000001)
req=rand(1);
end
これによりループに陥る可能性がありますが、正しい数値が生成されます。すべての小数を表示するには、次のコマンドも使用できます。
format long
これにより、小数点以下 15 桁が表示されます。元に戻すには:
formay short