Sous échantillon aléatoire pas vraiment aléatoire! Pourquoi ? [Python] - Python - Programmation
Marsh Posté le 09-07-2017 à 20:40:11
Pour la postérité; apparemment ça ça marche mieux :
https://docs.python.org/2/library/random.html
Code :
|
Marsh Posté le 10-07-2017 à 09:16:00
Les nombres aléatoires en informatique sont calculées à partir de seed. On appelle cela des générateurs de nombre pseudo aléatoires.
Il s'agit généralement d'une suite arithmétique qui dépend d'une entrée x et défois d'autres facteurs.
La méthode rand de posix fonctionne de la même manière et renverra toujours le même suite de nombre.
Il y a plusieurs méthodes
On peut prendre par exemple une suite de Fibonacci et l'appliquer un modulo en sortit
Ou des suites simples
En cryptographie on a recourt souvent a des registres à décallages gauches (LFSR)
On charge un nombre dans un de ces registres et on applique des décallages de bits successifs.
Pour éviter ce genre de phénomènes les générateurs peuvent prendre des entrées à valeur variables, comme par exemple le temps, l'heure actuel, l'état de la mémoire etc...
pour numpy voila un post qui décrit ton problème.
https://stackoverflow.com/questions [...] m-seed0-do
si tu changes numpy.random.seed(0) par numpy.random.seed(time)
tu obtiendras des suites différentes, voila.
Marsh Posté le 09-07-2017 à 20:07:51
Bonjour,
j'ai un script Python qui sélectionne de manière aléatoire un sous-ensemble d'une taille déterminée (50) de paires de valeurs parmi un ensemble d'origine plus grand (2000).
Aléatoire ?
Ben non !
Et ça m'embête beaucoup.
Je m'explique...
En gros j'ai un array X et un autre y représentant un nuage de points. Y a 2000 points dans chaque vecteur.
Je fais un plot(X,y) ça me fait un joli dessin. Bien.
Si je stack X et y dans un array de dimensions (2000,2) pour ensuite faire :
Ben j'extrais un sous-échantillons de 50 pairs (X,y).
Si je les plot, ça va bien.
Le hic c'est que quand je lance ce script une deuxième, puis une troisième, puis une n-ième fois, il me retrouve systématiquement les mêmes 50 paires qu'il était censé trouvé de manière aléatoire pourtant !
Questions :
1. Pourquoi tant de systématisme dans ce qui devrait être du hasard ?
2. Comment s'appelle ce phénomène ?
3. Comment l'éviter, i.e. donc comment avoir réellement 50 autres paires choisies de manière aléatoire dans mon jeu de données lorsque je lance le script plusieurs fois ?
Merci beaucoup pour vos éclairages
Message édité par Swiss_Knight le 09-07-2017 à 20:09:12
---------------
Hergestellt in der Schweiz.