[python] Différence entre la sortie rand et randn

Référence: [Deep Learning from scratch (p98 4.3.1)](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82 % 89% E4% BD% 9C% E3% 82% 8BApprentissage profond-% E2% 80% 95Python% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% A3% E3% 83% BC% E3% 83% 97% E3% 83% A9% E3% 83% BC% E3% 83% 8B% E3% 83% B3% E3% 82% B0% E3% 81% AE% E7% 90% 86% E8% AB% 96% E3% 81% A8% E5% AE% 9F% E8% A3% 85-% E6% 96% 8E% E8% 97% A4-% E5% BA% B7% E6% AF% 85 / dp / 4873117585)

rand produit simplement un nombre aléatoire dans la plage de 0 à + 1 (appelée distribution uniforme). randn produit une valeur numérique aléatoire avec une distribution normale standard (distribution gaussienne). La distribution normale standard (distribution gaussienne) est une distribution normale avec une moyenne de 0 et un écart type de 1. Autrement dit, il génère une valeur numérique aléatoire dans la plage où la moyenne devient 0. Une valeur proche de 0 est susceptible d'être sortie et la valeur est biaisée entre -1 et +1.

Jetez un œil à la sortie

6 Vous ne pouvez pas vraiment faire la différence si vous générez une valeur numérique. (S'il s'agit de randn, -1,8 est également affiché.)

tmp.py


import numpy as np

print("-----rand-----")
#print(np.random.rand(2,3))
print(np.random.rand(2,3).flatten().sum()/6)
print("-----randn-----")
#print(np.random.randn(2,3))
print(np.random.randn(2,3).flatten().sum()/6)
mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
[[ 0.93180533  0.57683396  0.61127319]
 [ 0.85445375  0.02708778  0.59547601]]
0.548895695538
-----randn-----
[[-0.26519086 -0.30503921  1.38052841]
 [ 0.78893855  1.17725959  1.80882169]]
0.31519809212

mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
[[ 0.60780629  0.20632273  0.29124602]
 [ 0.30784594  0.70772679  0.01821361]]
0.59935565743
-----randn-----
[[ 0.71569157 -0.52234049 -1.59936154]
 [-0.82040641 -1.40208476  0.89450808]]
0.669739423807

mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
[[ 0.490528    0.77907488  0.7239194 ]
 [ 0.85538536  0.92002825  0.67559426]]
0.495670703747
-----randn-----
[[-0.15695285 -0.34244922 -1.44827391]
 [-1.36062357 -0.49387177 -1.81863075]]
-0.431866047467

mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
[[ 0.84705902  0.58580408  0.31309435]
 [ 0.59569691  0.24460075  0.45989438]]
0.392091814221
-----randn-----
[[-0.35680625 -2.18199977  0.54243995]
 [-0.29317688 -0.43111914 -1.47586303]]
-0.0274650256491

Cependant, lorsque 1000 valeurs numériques sont générées, la différence devient perceptible. randn a convergé vers 0. La raison pour laquelle la moyenne du rand converge vers 0,5 est qu'elle est générée en moyenne entre 0 et +1. Il n'a pas tendance à avoir une distribution normale avec une moyenne de 0,5.

tmp.py


import numpy as np

print("-----rand-----")
print(np.random.rand(1000).flatten().sum()/1000)
print("-----randn-----")
print(np.random.randn(1000).flatten().sum()/1000)
mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
0.496111761085
-----randn-----
0.0156004004458
mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
0.499698237009
-----randn-----
-0.00664557647709
mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
0.494677814946
-----randn-----
0.0301994725782
mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
0.515244265326
-----randn-----
-0.00605375728391
mbp-2:deep-learning-from-scratch-master shiraki$ python tmp.py
-----rand-----
0.500510191675
-----randn-----
0.00764750739818

Recommended Posts

[python] Différence entre la sortie rand et randn
Différence entre Ruby et Python Split
Différence entre java et python (mémo)
Différence entre == et est en python
Différence entre la série python2 et la série python3 dict.keys ()
[Python] Différence entre fonction et méthode
Python - Différence entre exec et eval
[Python] Différence entre randrange () et randint ()
[Python] Différence entre trié et trié (Colaboratoire)
Python> Différence entre la sortie inpbt et print (inpbt)> [1. 2. 3.] / array ([1., 2., 3.], dtype = float32)
différence entre les instructions (instructions) et les expressions (expressions) en Python
Différences dans la relation entre PHP et Python enfin et quitter
Différence entre @classmethod et @staticmethod en Python
Différence entre append et + = dans la liste Python
Différence entre non local et global en Python
[Python] Différence entre la méthode de classe et la méthode statique
[Python Iroha] Différence entre List et Tuple
entrée et sortie python
[python] Différence entre variable et self. Variable dans la classe
À propos de la différence entre "==" et "is" en python
Différence entre processus et travail
Différence entre Ruby et Python en termes de variables
Différence entre régression et classification
Différence entre np.array et np.arange
Différence entre MicroPython et CPython
Différence entre ps a et ps -a
Différence entre return et print-Python
Module Python num2words Différence de comportement entre l'anglais et le russe
Méthode de concaténation de liste en python, différence entre list.extend () et opérateur «+»
Mémorandum (différence entre csv.reader et csv.dictreader)
(Remarque) Différence entre la passerelle et la passerelle par défaut
Coopération entre le module python et l'API
Différence entre le randint de Numpy et le randint de Random
Différence entre Python, stftime et strptime
Différence entre tri et tri (mémorial)
Différence entre SQLAlchemy flush () et commit ()
Python / Numpy> Lien> Différence entre numpy.random et random.random> thread-safe ou non
Fonction pour ouvrir un fichier en Python3 (différence entre open et codecs.open et comparaison de vitesse)
Différence d'authenticité entre Python et JavaScript
[Xg boost] Différence entre softmax et softprob
[Django ORM] Différence entre values () et only ()
Différences entre la syntaxe Python et Java
Différence entre la régression linéaire, la régression Ridge et la régression Lasso
Différence de vitesse entre wsgi, bouteille et flacon
Différences de multithreading entre Python et Jython
Différence entre Ruby et Python (syntaxe de base)
Différence entre numpy.ndarray et list (dimension, taille)
Correspondance entre les fonctions intégrées de Python et Rust
Différence entre ls -l et la commande cat
Communication de données chiffrées entre Python et C #
Vérification de la différence et de la compatibilité entre keras et tf.keras # 1
[Introduction à Python] Quelle est la différence entre une liste et un taple?
Quelle est la différence entre «pip» et «conda»?
Résumé des différences entre PHP et Python
Lire JSON avec Python et générer un CSV
La réponse de "1/2" est différente entre python2 et 3
Différence entre l'utilisation et l'importation sur le langage de bouclier
[Python] Mémo de conversion entre les données temporelles et les données numériques