Amélioration de la génération de nombres aléatoires en C pour des simulations de dés impartiales
La génération de nombres aléatoires est essentielle dans diverses applications, y compris le développement de jeux. Bien que le code fourni génère des nombres aléatoires entre 1 et 6, il peut produire des résultats biaisés, comme observé dans le résultat.
Biais dans la génération de nombres aléatoires
Le problème se pose de l'utilisation de l'opération modulo, qui divise toute la plage des valeurs possibles par 6 et renvoie le reste. Cette approche peut introduire un biais, en particulier si la plage est petite.
Améliorations C 11 pour les nombres aléatoires
Pour résoudre ce problème, C 11 a introduit de nouvelles fonctionnalités qui offrent une meilleure distribution et l'impartialité dans la génération de nombres aléatoires. Une approche recommandée consiste à utiliser le code suivant :
#include <random> #include <iostream> int main() { std::random_device dev; std::mt19937 rng(dev()); std::uniform_int_distribution<std::mt19937::result_type> dist6(1, 6); // distribution in range [1, 6] std::cout << dist6(rng) << std::endl; }
Explication du code
Cette approche exploite la bibliothèque de nombres aléatoires C 11, qui offre une génération de nombres aléatoires plus robuste et impartiale. En implémentant ce code, vous pouvez garantir des nombres aléatoires justes et imprévisibles, améliorant ainsi le réalisme de votre simulation de lancer de dés.
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!