Python verfügt als Standardbibliothek über ein Modul random, mit dem Zufallszahlen mit verschiedenen Verteilungen generiert werden können. Es hat die folgenden Hauptmerkmale.
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]])
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])
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