decimal.Decimal
ランダムインスタンスを取得するにはどうすればよいですか?ランダムモジュールは、Decimalsに変換するためのピタであるfloatのみを返すようです。
ashirley
質問する
25131 次
7 に答える
28
「乱数」とは何ですか? Decimal には任意の精度があるため、Decimal に保持できる限りの乱数を生成すると、マシンのメモリ全体を格納する必要があります。
乱数に必要な精度の 10 進数の桁数を知る必要があります。その時点で、ランダムな整数を取得してそれを割るのは簡単です。たとえば、ポイントの上に 2 桁、分数に 2 桁が必要な場合 (ここで randrangeを参照):
decimal.Decimal(random.randrange(10000))/100
于 2009-01-13T15:09:41.450 に答える
16
float から Decimal を作成するには、最初にそれを文字列に変換します。これは、変換の詳細 (表現エラーを含む) を明示的に思い出させるものとして機能します。
>>> import random, decimal
>>> decimal.Decimal(str(random.random()))
Decimal('0.467474014342')
これはあなたが意味するものですか?それは私にはピタのようには見えません。任意の範囲と精度にスケーリングできます。
于 2009-01-13T14:44:36.790 に答える
9
カンマの前後に必要な桁数がわかっている場合は、次を使用できます。
>>> import decimal
>>> import random
>>> def gen_random_decimal(i,d):
... return decimal.Decimal('%d.%d' % (random.randint(0,i),random.randint(0,d)))
...
>>> gen_random_decimal(9999,999999) #4 digits before, 6 after
Decimal('4262.786648')
>>> gen_random_decimal(9999,999999)
Decimal('8623.79391')
>>> gen_random_decimal(9999,999999)
Decimal('7706.492775')
>>> gen_random_decimal(99999999999,999999999999) #11 digits before, 12 after
Decimal('35018421976.794013996282')
>>>
于 2009-01-13T14:56:32.787 に答える
2
random モジュールには、「浮動小数点数のみを返す」だけではありませんが、とにかく:
from random import random
from decimal import Decimal
randdecimal = lambda: Decimal("%f" % random.random())
それとも、あなたの質問で何か明らかなことを見逃していましたか?
于 2009-01-13T16:04:14.210 に答える