Maison > développement back-end > C++ > Comment puis-je générer des nombres aléatoires véritablement uniformes en C ?

Comment puis-je générer des nombres aléatoires véritablement uniformes en C ?

Susan Sarandon
Libérer: 2024-12-22 19:42:11
original
627 Les gens l'ont consulté

How Can I Generate Truly Uniform Random Numbers in C  ?

Générer des nombres aléatoires uniformément sur une plage entière

Vous cherchez à générer des nombres aléatoires uniformément répartis dans un intervalle spécifié, [min, max]. Cependant, votre méthode actuelle produit des nombres regroupés autour d'un seul point.

Éviter rand()

La fonction rand() est souvent peu fiable pour générer des distributions uniformes. Il s'appuie sur un opérateur de module qui peut introduire des biais.

C 11 Uniform Distribution

En C 11, pensez à utiliser std::uniform_int_distribution pour une solution plus fiable :

#include <iostream>
#include <random>

int main()
{    
    const int range_from  = min;
    const int range_to    = max;
    std::random_device                  rand_dev;
    std::mt19937                        generator(rand_dev());
    std::uniform_int_distribution<int>  distr(range_from, range_to);

    std::cout << distr(generator) << '\n';
}
Copier après la connexion

Autres générateurs aléatoires

La bibliothèque C 11 propose divers autres générateurs aléatoires avec différentes distributions. Par exemple, std::shuffle peut réorganiser de manière aléatoire les éléments d'un conteneur.

Alternative Boost.Random

Si C 11 n'est pas disponible, envisagez d'utiliser Boost.Random, qui fournit des fonctionnalités similaires.

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