[PYTHON] Génération de nombres pseudo aléatoires et échantillonnage aléatoire

Générez des nombres aléatoires avec des modules standard

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.

Exemple de génération aléatoire

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

Tri aléatoire des trames de données

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

Tirez des cartes à jouer

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

Génération de nombres pseudo aléatoires et échantillonnage aléatoire
Génération de vecteurs de nombres aléatoires de haute dimension ~ Échantillonnage d'hypercube latin / Échantillonnage super carré latin ~
[python] Mémorandum de génération aléatoire
Génération de nombres aléatoires entiers sans chevauchement (0-N-1)
Résumé de la génération de nombres aléatoires par Numpy
# Génération de chaînes aléatoires
Dérivation de la distribution t multivariée et implémentation de la génération de nombres aléatoires par python
[Note] Création aléatoire?
Génération de chaînes aléatoires (Python)
Module aléatoire de Numpy Génération aléatoire
Arbre de décision et forêt aléatoire
Notation A1 et nombre 26-aires
Graine aléatoire corrigée dans TensorFlow et Numpy Un peu différent