Python a un module random comme bibliothèque standard, qui peut générer des nombres aléatoires avec diverses distributions. Il présente les principales caractéristiques suivantes.
La fonction d'échantillonnage aléatoire de NumPy (http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.random_sample.html#numpy.random.random_sample) est un nombre à virgule flottante ou un entier (http) Vous pouvez générer des nombres aléatoires sur //docs.scipy.org/doc/numpy/reference/generated/numpy.random.random_integers.html#numpy.random.random_integers).
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]])
Le tri aléatoire des trames de données est possible en utilisant permutation Je vais.
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])
Prenons un code qui pioche 10 cartes sur une pile de 52 cartes. Vous pouvez mélanger en utilisant random.shuffle, vous pouvez donc soustraire n'importe quel nombre d'ici.
#Préparez une pile de cartes à jouer
deck = list(
itertools.product(list(range(1, 14)),
['bêche', 'cœur', 'diamant', 'club']))
random.shuffle(deck) #Mélangez le jeu
print("Carte dessinée:")
for i in range(10): #Piochez 10 cartes
print(deck[i][1] + "de" + str(deck[i][0]))
#=>Carte dessinée:
#Diamant 6
#Club 3
#10 de coeurs
#Diamant 12
#Pique 8
#Club 13
#Diamant 13
#Pique 5
#12 de coeurs
#Diamant 7
Puisqu'il n'y a que 52 cartes à jouer, random.shuffle (53) entraînera IndexError.
Recommended Posts