[PYTHON] Pseudozufallszahlengenerierung und Zufallsstichprobe

Generieren Sie Zufallszahlen mit Standardmodulen

Python verfügt als Standardbibliothek über ein Modul random, mit dem Zufallszahlen mit verschiedenen Verteilungen generiert werden können. Es hat die folgenden Hauptmerkmale.

Beispiel für eine zufällige Generierung

Die Zufallsstichprobenfunktion von NumPy (http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.random_sample.html#numpy.random.random_sample) ist eine Gleitkommazahl oder eine Ganzzahl (http). Sie können Zufallszahlen unter //docs.scipy.org/doc/numpy/reference/generated/numpy.random.random_integers.html#numpy.random.random_integers generieren.

np.random.random_sample((5,))
#=> array([ 0.80055457,  0.19615444,  0.50532311,  0.48243283,  0.56227889])

np.random.random_sample((5,2))
#=>
# array([[ 0.59495428,  0.56194628],
#        [ 0.93675326,  0.88873404],
#        [ 0.98967746,  0.2319963 ],
#        [ 0.20625308,  0.76956028],
#        [ 0.7870824 ,  0.30181687]])

Zufällige Sortierung von Datenrahmen

Das zufällige Sortieren von Datenrahmen ist mithilfe von [permutation] möglich (http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.permutation.html#numpy.random.permutation). Ich werde.

df = pd.DataFrame(np.arange(10*4).reshape(10,4))
sampler = np.random.permutation(5)
#=> array([0, 2, 1, 3, 4])

df.take(sampler)
#=>
#     0   1   2   3
# 0   0   1   2   3
# 2   8   9  10  11
# 1   4   5   6   7
# 3  12  13  14  15
#4  16  17  18  19

np.random.permutation(len(df))
#=> array([6, 7, 8, 3, 9, 4, 2, 1, 0, 5])

Spielkarten ziehen

Stellen Sie sich einen Code vor, der 10 Karten aus einem Stapel von 52 Karten zieht. Sie können mit random.shuffle mischen, sodass Sie eine beliebige Zahl von hier abziehen können.

#Bereiten Sie einen Stapel Spielkarten vor
deck = list(
    itertools.product(list(range(1, 14)),
                      ['Spaten', 'Herz', 'Diamant', 'Verein']))

random.shuffle(deck) #Mische das Deck

print("Karte gezogen:")
for i in range(10): #Ziehe 10 Karten
    print(deck[i][1] + "von" + str(deck[i][0]))

#=>Karte gezogen:
#Diamant 6
#Club 3
#10 von Herzen
#Diamant 12
#Spaten 8
#Club 13
#Diamant 13
#Spaten 5
#12 von Herzen
#Diamant 7

Da es nur 52 Spielkarten gibt, führt random.shuffle (53) zu IndexError.

Recommended Posts

Pseudozufallszahlengenerierung und Zufallsstichprobe
Erzeugung hochdimensionaler Zufallszahlenvektoren ~ Latin Hypercube Sampling / Latin Super Square Sampling ~
[Python] Memorandum über zufällige Generationen
Nicht überlappende Erzeugung ganzzahliger Zufallszahlen (0-N-1)
Zusammenfassung der Zufallszahlengenerierung durch Numpy
# Zufällige Zeichenfolgengenerierung
Ableitung der multivariaten t-Verteilung und Implementierung der Zufallszahlengenerierung durch Python
[Anmerkung] Zufällige Erstellung?
Zufällige String-Generierung (Python)
Numpys Zufallsmodul Zufällige Generierung
Entscheidungsbaum und zufälliger Wald
A1-Notation und 26-stellige Nummer
Zufälliger Samen in TensorFlow und Numpy fixiert Etwas anders