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.
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.
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'; }
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.
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!