Frage

Wie erhalte ich ein zufälliges decimal.Decimal Beispiel? Es scheint, dass der Zufall Modul liefert nur Schwimmern, die ein Fladen zu konvertieren Dezimalzahlen sind.

War es hilfreich?

Lösung

Was ist „eine zufällige Dezimalzahl“? Dezimalzahlen haben beliebiger Genauigkeit, so eine Zahl mit so viel Zufälligkeit zu erzeugen, wie Sie in einem Dezimal halten kann, würde den gesamten Speicher des Geräts zu speichern nehmen.

Sie müssen wissen, wie viele Dezimalstellen von Präzision, die Sie in Ihrer Zufallszahl wollen, an welcher Stelle es ist einfach nur eine zufällige ganze Zahl zu greifen und sie teilt. Wenn Sie zum Beispiel zwei Ziffern über dem Punkt und zwei Ziffern in der Fraktion (siehe hier Randrange):

decimal.Decimal(random.randrange(10000))/100

Andere Tipps

Von der Standardbibliothek Referenz :

eine Dezimalzahl von einem Schwimmer zu erstellen, konvertieren Sie es zuerst in einen String. Dies dient als eine explizite Erinnerung an den Einzelheiten der Umwandlung (einschließlich Darstellungsfehler).

>>> import random, decimal
>>> decimal.Decimal(str(random.random()))
Decimal('0.467474014342')

Ist das, was Sie meinen? Es scheint nicht, wie ein Fladen mir. Sie können es in skalieren, was auch immer Reichweite und Präzision, die Sie wollen.

Wenn Sie wissen, wie viele Stellen Sie vor und nach dem Komma, können Sie:

>>> 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')
>>>

Das statistische Modul hat mehr zu bieten als „nur Schwimmern Rückkehr“, aber trotzdem:

from random import random
from decimal import Decimal
randdecimal = lambda: Decimal("%f" % random.random())

Oder habe ich etwas verpasst offensichtlich in Frage?

decimal.Decimal(random.random() * MAX_VAL).quantize(decimal.Decimal('.01'))

Eine weitere Möglichkeit, eine zufällige Dezimalzahl zu machen.

import random
round(random.randint(1, 1000) * random.random(), 2)

An diesem Beispiel:

  • random.randint () erzeugt zufällige ganze Zahl im angegebenen Bereich (einschließlich)
  • random.random () erzeugt zufällige Gleitkommazahl im Bereich (0.0, 1.0)
  • Schließlich round () Funktion wird das Multiplikationsergebnis des oben genannten Werte Multiplikation (etwas lang wie 254,71921934351644) an die angegebenen Nummer nach dem Komma abzurunden (in unserem Fall würden wir bekommen 254,71)
import random
y = eval(input("Enter the value of y for the range of random number : "))
x = round(y*random.random(),2)  #only for 2 round off 
print(x)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top