実現したいこと
Pythonで1から10までの小数点以下3桁の乱数を生成したい。
前提
1~10までの整数、または長い小数を出力させることはできました。
しかし、桁数を制限することができずうまくいきません。
どのようにすれば良いか、教えてください。
該当のソースコード
整数バージョン
Python
1import random 2 3random_number = random.randint(1, 10) 4print(random_number)
小数バージョン
Python
1import random 2 3random_number = random.uniform(1, 10) 4print(random_number)
補足情報(FW/ツールのバージョンなど)
どうしても無理ならば、10000まで整数で数値を出してから1000で割ろうとは思っていますが、そうするしか無いのでしょうか?
10000までの整数でなく、小数点以下3桁の数が必要な理由は何でしょうか?
round で丸めるか、
print(round(random_number, 3))
表示上の問題であれば、
print(f'{random_number:.3f}')
とします。
TakaiYさん、コメントありがとうございます。
ストップウォッチに連携させてランダムな値を狙うというゲームを自作しようとしており、その値を10秒までの適当な数にしたいためです。
ストップウォッチで取れるのが3位までだったためそのような形にしました。
melianさん回答ありがとうございます。
今のところは表示だけで十分なためprint(f'{random_number:.3f}')を使用したいと考えていますが、これを使用する先は少数バージョンの方という認識で問題ないでしょうか?
> これを使用する先は少数バージョンの方という認識で問題ないでしょうか?
はい、そうなります。ただ、:.3f というフォーマット指定子は整数にも使用可能です。例えば randint() の結果が 4 の場合、:.3f による表示結果は 4.000 になります。
なるほどです
intに対しても使用できるとなると便利ですね…
補足ありがとうございます!!
他の方の回答もとても参考になりましたが、丸める際の不都合についても言及してくれたためベストアンサーはactorbugさんのものにさせていただきました!
melianさんもコメントから教えてくださったりと非常に助かりました。
ありがとうございます。

回答3件
あなたの回答
tips
プレビュー