Maison > développement back-end > C++ > Comment puis-je générer des écarts normaux aléatoires en C/C à l'aide de la transformation Box-Muller ?

Comment puis-je générer des écarts normaux aléatoires en C/C à l'aide de la transformation Box-Muller ?

Patricia Arquette
Libérer: 2024-11-27 18:48:15
original
771 Les gens l'ont consulté

How Can I Generate Random Normal Deviates in C/C   Using the Box-Muller Transform?

Génération d'écarts normaux aléatoires dans C/C

Générer des nombres aléatoires qui suivent une distribution normale est une tâche courante dans diverses applications. En C/C, il existe plusieurs approches pour y parvenir sans recourir à des bibliothèques externes comme Boost.

Une méthode largement utilisée est la transformée de Box-Muller, qui transforme deux nombres aléatoires uniformément distribués en une paire de nombres normalement distribués. nombres aléatoires. La formule mathématique est la suivante :

x = sqrt(-2 * ln(u1)) * cos(2 * M_PI * u2)
y = sqrt(-2 * ln(u1)) * sin(2 * M_PI * u2)
Copier après la connexion

où u1 et u2 sont des nombres aléatoires uniformément distribués dans la plage [0, 1]. Pour générer un seul écart normal aléatoire, générez une paire à l'aide de la transformation Box-Muller et renvoyez l'une d'elles, en stockant l'autre pour une utilisation ultérieure.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal