Revenir au site

Générateur de nombres aléatoires par convolution

broken image

Dans les statistiques et les logiciels , un générateur de nombres aléatoires de convolution est une méthode d’ échantillonnage de nombres pseudo-aléatoires qui peut être utilisée pour générer des variables aléatoires à partir de certaines classes de distribution de probabilité. L’avantage particulier de ce type d’approche est qu’il permet de tirer parti des logiciels existants pour générer des variables aléatoires à partir d’autres distributions, généralement non uniformes. Cependant, des algorithmes plus rapides peuvent être obtenus pour les mêmes distributions par d'autres approches plus compliquées.

Un certain nombre de distributions peuvent être exprimées en termes de la somme (éventuellement pondérée) de deux variables aléatoires ou plus à partir d'autres distributions. (La distribution de la somme est la convolution des distributions des variables aléatoires individuelles).

Exemple: Considérons le problème de la génération d’une variable aléatoire avec une distribution d’Erlang. Une telle variable aléatoire peut être définie comme la somme de k variables aléatoires ayant chacune une distribution exponentielle. Ce problème équivaut à générer un nombre aléatoire pour un cas particulier de la distribution Gamma , dans lequel le paramètre de forme prend une valeur entière.

Générateur de nombres aléatoires basé sur un compteur (CBRNG)

La génération de nombres aléatoires basée sur des compteurs est une technique permettant de créer un générateur de nombres pseudo-aléatoires en utilisant uniquement un compteur entier comme état interne du générateur.

La plupart des générateurs pseudo-aléatoires comme https://convertir.github.io/outils/generateur-chiffre-aleatoire.html reposent sur un type d'état interne et sur une fonction qui met à jour l'état. Chaque valeur de l'état interne est ensuite mappée sur un échantillon pseudo-aléatoire. Normalement, la fonction de transition d'état est compliquée et le mappage de l'état sur un échantillon est simple. Dans le cas de générateurs basés sur des compteurs, l'état interne est simplement un compteur entier. La fonction de transition d'état est un incrément de un. La complexité vient dans la carte de l'état à l'échantillon aléatoire.

Étant donné que l'état n'est qu'un compteur, il est simple de séparer la génération de nombres aléatoires entre processeurs parallèles sans chevauchement. Les sauts de tête et les retours en arrière dans le flux de nombres aléatoires générés deviennent également des opérations O (1) triviales. Il est facile d’organiser différents nombres de processeurs parallèles pour générer la même séquence de nombres pseudo-aléatoires.

La technique a été proposée par un groupe de DE Shaw Research. En plus de la technique générale, des générateurs spécifiques nommés ARS , Threefry et Philox ont été proposés à titre d’exemples. Le code implémentant les générateurs est disponible dans la bibliothèque "Random123" .. Le générateur ARS-5 est inclus dans les versions récentes de la bibliothèque de noyaux Math Intel et offre d'excellentes performances. Les variantes de Philox sont les générateurs les plus rapides sur les GPU qui réussissent à la fois TestU01 et le test d'Ising.