372 Stimmen

Einen zufälligen booleschen Wert in Python erhalten?

Ich bin auf der Suche nach dem besten Weg (schnell und elegant), um eine zufällige boolesche in Python zu erhalten (eine Münze werfen).

Im Moment verwende ich random.randint(0, 1) o random.getrandbits(1) .

Gibt es bessere Möglichkeiten, die mir nicht bekannt sind?

7voto

Partiban Punkte 131

Sie könnten die Faker-Bibliothek Es wird hauptsächlich zu Testzwecken verwendet, kann aber auch eine Vielzahl von gefälschten Daten liefern.

Installieren: https://pypi.org/project/Faker/

>>> from faker import Faker
>>> fake = Faker()
>>> fake.pybool()
True

4voto

ojunk Punkte 819

Ich war neugierig, wie die Geschwindigkeit der numpy-Antwort im Vergleich zu den anderen Antworten abschneidet, da dies bei den Vergleichen nicht berücksichtigt wurde. Um ein zufälliges bool zu generieren, ist dies viel langsamer, aber wenn man viele generieren wollte, wird dies viel schneller:

$ python -m timeit -s "from random import random" "random() < 0.5"
10000000 loops, best of 3: 0.0906 usec per loop
$ python -m timeit -s "import numpy as np" "np.random.randint(2, size=1)"
100000 loops, best of 3: 4.65 usec per loop

$ python -m timeit -s "from random import random" "test = [random() < 0.5 for i in range(1000000)]"
10 loops, best of 3: 118 msec per loop
$ python -m timeit -s "import numpy as np" "test = np.random.randint(2, size=1000000)"
100 loops, best of 3: 6.31 msec per loop

3voto

Althea Punkte 87

Ein neuer Ansatz in dieser Frage wäre die Verwendung von Faker die Sie leicht installieren können mit pip .

from faker import Factory

#----------------------------------------------------------------------
def create_values(fake):
    """"""
    print fake.boolean(chance_of_getting_true=50) # True
    print fake.random_int(min=0, max=1) # 1

if __name__ == "__main__":
    fake = Factory.create()
    create_values(fake)

3voto

gourav naik Punkte 31

U könnte dies versuchen es erzeugt zufällig generierte Array von true und false :

a=[bool(i) for i in np.array(np.random.randint(0,2,10))]

aus: [Wahr, Wahr, Wahr, Wahr, Wahr, Falsch, Wahr, Falsch, Wahr, Falsch]

0voto

Javad Nikbakht Punkte 751

Die nachstehenden Methoden eignen sich ebenfalls für diesen Zweck:

import random
random.choice([0, 1])

または

import random
random.choice(range(2))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X