Maison développement back-end C++ Explication détaillée de la fonction de nombres aléatoires en C++

Explication détaillée de la fonction de nombres aléatoires en C++

Nov 18, 2023 pm 04:08 PM
générateur de nombres aléatoires nombre pseudo-aléatoire distribution de nombres aléatoires

Explication détaillée de la fonction de nombres aléatoires en C++

Explication détaillée de la fonction de nombre aléatoire en C++

Le nombre aléatoire joue un rôle important dans la programmation informatique. Il peut être utilisé pour simuler des événements aléatoires, générer des séquences de nombres aléatoires et d'autres applications. Le langage C++ fournit une série de fonctions de nombres aléatoires pour permettre aux développeurs de générer et d'appliquer des nombres aléatoires. Cet article présentera en détail l'utilisation et les précautions de la fonction de nombres aléatoires en C++.

En C++, la fonction de nombres aléatoires comprend principalement deux aspects : la fonction de génération de nombres pseudo-aléatoires et la fonction de nombres aléatoires auxiliaire.

Tout d’abord, introduisons la fonction de génération de nombres pseudo-aléatoires en C++. La bibliothèque de nombres aléatoires <random></random> introduite dans C++11 fournit une fonction de génération de nombres pseudo-aléatoires plus flexible et plus efficace. Il comprend principalement les classes importantes suivantes : <random></random> 提供了更加灵活和高效的伪随机数生成函数。其主要包括以下几个重要的类:

  1. std::random_device:该类用于生成真正的随机数种子,可以通过硬件随机数发生器或操作系统提供的随机数接口来获得。
  2. std::seed_seq:该类用于生成随机数种子序列,可以将多个种子值组合在一起生成种子序列,提供更加复杂的随机数生成方式。
  3. std::mt19937std::mt19937_64:这两个类是伪随机数引擎,它们使用梅森旋转算法生成高质量的伪随机数序列。std::mt19937使用32位整数作为状态,std::mt19937_64使用64位整数作为状态。
  4. std::uniform_int_distributionstd::uniform_real_distribution:这两个类是均匀分布的随机数分布器。std::uniform_int_distribution用于生成均匀分布的整数随机数,std::uniform_real_distribution用于生成均匀分布的实数随机数。

使用这些类可以实现伪随机数的生成。首先,我们需要使用 std::random_device 生成一个真正的随机数种子。然后,通过伪随机数引擎 std::mt19937std::mt19937_64 使用种子初始化,再使用分布器 std::uniform_int_distributionstd::uniform_real_distribution 生成随机数。

下面是一段示例代码,演示了如何生成一个均匀分布的整数随机数:

#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 100);

    for (int i = 0; i < 10; ++i) {
        std::cout << dis(gen) << " ";
    }

    return 0;
}
Copier après la connexion

运行上述代码,将会输出10个在1到100之间的随机整数。

除了伪随机数生成函数外,C++中还提供了一些辅助随机数函数,用于更方便地处理随机数。其中包括:

  1. std::rand:该函数生成一个0到RAND_MAX之间的伪随机整数,默认的RAND_MAX值为32767。需要注意的是,rand函数通常使用std::srand设置随机数种子,但是它只能生成相对较低质量的随机数。
  2. std::srand:该函数用于设置伪随机数生成器的种子值。一般来说,我们可以使用系统时间作为种子值,以保证每次运行程序生成的随机数序列都是不同的。
  3. std::shuffle:该函数用于随机打乱一个序列。它接受两个迭代器参数,将这段序列根据当前的伪随机数生成器重新排列。

辅助随机数函数通常是以C风格的函数(如randsrand

  1. std::random_device : Cette classe est utilisée pour générer de véritables graines de nombres aléatoires, qui peuvent être générées via un générateur de nombres aléatoires matériel ou le système d'exploitation Fourni une interface de nombres aléatoires à obtenir.
  2. std::seed_seq : cette classe est utilisée pour générer une séquence de départ de nombres aléatoires. Plusieurs valeurs de départ peuvent être combinées ensemble pour générer une séquence de départ, fournissant ainsi un résultat plus complexe. méthode de génération de nombres aléatoires.
  3. std::mt19937, std::mt19937_64 : ces deux classes sont des moteurs de nombres pseudo-aléatoires qui utilisent l'algorithme de rotation de Mersenne pour générer des valeurs élevées. qualité Séquence de nombres pseudo-aléatoires. std::mt19937 utilise un entier de 32 bits comme statut et std::mt19937_64 utilise un entier de 64 bits comme statut.
  4. std::uniform_int_distribution, std::uniform_real_distribution : ces deux classes sont des distributeurs de nombres aléatoires uniformément distribués. std::uniform_int_distribution est utilisé pour générer des nombres aléatoires entiers uniformément distribués, et std::uniform_real_distribution est utilisé pour générer des nombres aléatoires réels uniformément distribués.
Utilisez ces classes pour générer des nombres pseudo-aléatoires. Tout d'abord, nous devons utiliser std::random_device pour générer une véritable graine de nombre aléatoire. Ensuite, utilisez l'initialisation des graines via le moteur de nombres pseudo-aléatoires std::mt19937 ou std::mt19937_64, puis utilisez le distributeur std::uniform_int_distribution code> ou <code>std::uniform_real_distribution génère des nombres aléatoires.

Ce qui suit est un exemple de code qui montre comment générer un nombre aléatoire entier uniformément distribué :

rrreee

Exécutez le code ci-dessus et 10 entiers aléatoires entre 1 et 100 seront générés. 🎜🎜En plus de la fonction de génération de nombres pseudo-aléatoires, C++ fournit également des fonctions auxiliaires de nombres aléatoires pour gérer plus facilement les nombres aléatoires. Ceux-ci incluent : 🎜
  1. std::rand : cette fonction génère un entier pseudo-aléatoire compris entre 0 et RAND_MAX, la valeur par défaut est RAND_MAXLa valeur est 32767. Il convient de noter que la fonction <code>rand utilise généralement std::srand pour définir la valeur de départ du nombre aléatoire, mais elle ne peut générer que des nombres aléatoires de qualité relativement faible.
  2. std::srand : Cette fonction est utilisée pour définir la valeur de départ du générateur de nombres pseudo-aléatoires. De manière générale, nous pouvons utiliser l'heure du système comme valeur de départ pour garantir que la séquence de nombres aléatoires générée par le programme est différente à chaque exécution.
  3. std::shuffle : Cette fonction est utilisée pour mélanger aléatoirement une séquence. Il accepte deux paramètres d'itérateur et réorganise la séquence en fonction du générateur de nombres pseudo-aléatoires actuel.
🎜Les fonctions auxiliaires de nombres aléatoires existent généralement sous la forme de fonctions de style C (telles que rand et srand), qui sont plus simples et plus direct à utiliser. Cependant, les nombres aléatoires générés par ces fonctions sont de mauvaise qualité et leur utilisation n’est pas recommandée dans le développement réel. En revanche, l’utilisation de la bibliothèque de nombres aléatoires fournie par C++11 est plus flexible et efficace. 🎜🎜Pour résumer, C++ fournit une série de fonctions de nombres aléatoires, notamment des fonctions de génération de nombres pseudo-aléatoires et des fonctions auxiliaires de nombres aléatoires. Parmi elles, la fonction de génération de nombres pseudo-aléatoires est plus flexible et plus efficace à utiliser, et son utilisation est recommandée dans le développement réel. Si vous avez besoin d'un moyen plus simple et plus direct de générer des nombres aléatoires, envisagez d'utiliser la fonction auxiliaire de nombres aléatoires. Lorsque vous utilisez une fonction de nombres aléatoires, vous devez faire attention à définir une valeur de départ de nombres aléatoires appropriée pour garantir que la séquence de nombres aléatoires générée est de haute qualité et indépendante. 🎜🎜J'espère que l'introduction de cet article pourra aider les lecteurs à mieux comprendre et appliquer la fonction de nombre aléatoire en C++. Si vous souhaitez utiliser des fonctions liées aux nombres aléatoires, il est recommandé d'utiliser la bibliothèque de nombres aléatoires introduite en C++11 pour profiter pleinement de sa flexibilité et de son efficacité. 🎜

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Générer des nombres et des chaînes aléatoires en JavaScript Générer des nombres et des chaînes aléatoires en JavaScript Sep 02, 2023 am 08:57 AM

La possibilité de générer des nombres aléatoires ou des chaînes alphanumériques s'avère utile dans de nombreuses situations. Vous pouvez l'utiliser pour faire apparaître des ennemis ou de la nourriture à différents endroits du jeu. Vous pouvez également l'utiliser pour suggérer des mots de passe aléatoires aux utilisateurs ou créer des noms de fichiers pour enregistrer des fichiers. J'ai écrit un tutoriel sur la façon de générer des chaînes alphanumériques aléatoires en PHP. J'ai dit au début de cet article que peu d'événements sont véritablement aléatoires, et il en va de même pour la génération de nombres aléatoires ou de chaînes. Dans ce tutoriel, je vais vous montrer comment générer une chaîne alphanumérique pseudo-aléatoire en JavaScript. Générer des nombres aléatoires en JavaScript Commençons par générer des nombres aléatoires. La première méthode qui me vient à l’esprit est Math.random(), qui renvoie un float

La différence entre aléatoire et pseudo-aléatoire La différence entre aléatoire et pseudo-aléatoire Oct 10, 2023 am 09:27 AM

La différence entre aléatoire et pseudo-aléatoire réside dans la prévisibilité, la reproductibilité, l’uniformité et la sécurité. Introduction détaillée : 1. Prévisibilité. Les nombres aléatoires ne peuvent pas être prédits même si les résultats passés sont connus, les résultats futurs ne peuvent pas être prédits avec précision car ils sont générés par des algorithmes. seed, vous pouvez régénérer la même séquence ou séquence ; 2. Reproductibilité, les nombres aléatoires ne sont pas reproductibles et les résultats générés à chaque fois sont indépendants, tandis que les nombres pseudo-aléatoires sont reproductibles Oui, utilisez simplement le même algorithme et les mêmes graines, etc.

Comment utiliser la fonction random.randint() pour générer des entiers aléatoires en Python 2.x Comment utiliser la fonction random.randint() pour générer des entiers aléatoires en Python 2.x Jul 31, 2023 pm 12:13 PM

Python est un langage de programmation populaire largement utilisé dans l'analyse de données, l'apprentissage automatique, le développement Web et d'autres domaines. En Python, le module random fournit une fonction random.randint() pour générer des entiers aléatoires. Cet article explique comment utiliser la fonction random.randint() pour générer des entiers aléatoires et fournit quelques exemples de code. Tout d’abord, nous devons importer le module random : importrandom Ensuite, nous pouvons appeler rando

chiffres de hauts et de bas chiffres de hauts et de bas Aug 28, 2023 pm 01:41 PM

Dans cet article, nous apprendrons ce qu'est un nombre fluctuant et présenterons notre méthode pour vérifier si un nombre donné est un nombre fluctuant, en utilisant une fonction booléenne pour vérifier les nombres fluctuants. Énoncé du problème Nous recevrons un numéro et notre tâche est de vérifier si le nombre donné fluctue. Comprenons d'abord un nombre fluctuant ; un nombre fluctuant est un nombre composé de seulement deux types de nombres, tous les autres nombres étant identiques. On peut dire qu'un nombre fluctuant est de la forme "PQPQPQ" où P et Q sont deux nombres différents dans le système numérique. Les premier et deuxième chiffres d’un nombre fluctuant ne peuvent jamais être identiques, c’est-à-dire que 11111 n’est pas un nombre fluctuant. Nous considérons généralement les nombres fluctuants non triviaux comme de simples nombres fluctuants, ce qui signifie que les nombres fluctuants doivent être composés d'au moins 3 chiffres.

Comment implémenter la sélection aléatoire pondérée en Python ? Comment implémenter la sélection aléatoire pondérée en Python ? Sep 11, 2023 pm 09:45 PM

Python est un langage de programmation flexible et efficace qui fournit un large éventail de fonctions et de bibliothèques de bas niveau pour améliorer les tâches de codage complexes. L'une des tâches consiste à effectuer une prise de décision irrégulière et pondérée, une stratégie mesurable dans laquelle tout a une probabilité prédéfinie d'être choisi. Contrairement à la sélection aléatoire simple, où chaque élément a une chance égale d'être sélectionné, la sélection aléatoire pondérée nous permet de spécifier une probabilité que chaque élément soit sélectionné, qui peut varier. Cet article vise à fournir une compréhension complète de la façon d'obtenir une sélection aléatoire pondérée en Python. Syntaxe La principale méthode en Python qui facilite les choix aléatoires pondérés est random.choices(). Voici sa syntaxe de base : random.choices(popula

Explication détaillée de la fonction de nombres aléatoires en C++ Explication détaillée de la fonction de nombres aléatoires en C++ Nov 18, 2023 pm 04:08 PM

Explication détaillée de la fonction de nombre aléatoire en C++ Le nombre aléatoire joue un rôle important dans la programmation informatique. Il peut être utilisé pour simuler des événements aléatoires, générer des séquences de nombres aléatoires et d'autres applications. Le langage C++ fournit une série de fonctions de nombres aléatoires pour permettre aux développeurs de générer et d'appliquer des nombres aléatoires. Cet article présentera en détail l'utilisation et les précautions de la fonction de nombres aléatoires en C++. En C++, la fonction de nombres aléatoires comprend principalement deux aspects : la fonction de génération de nombres pseudo-aléatoires et la fonction de nombres aléatoires auxiliaire. Tout d’abord, introduisons la fonction de génération de nombres pseudo-aléatoires en C++. C

Module aléatoire Python Module aléatoire Python Sep 03, 2023 am 11:57 AM

Dans le monde de la programmation, la capacité à générer des valeurs aléatoires est souvent cruciale. Que vous développiez un jeu, une simulation, un modèle statistique ou que vous ayez simplement besoin d'introduire de la variabilité dans votre programme, il est crucial de disposer d'un moyen fiable et efficace pour générer des nombres aléatoires. C'est là qu'intervient le module PythonRandom. Le module PythonRandom fournit un ensemble de fonctions permettant de générer des valeurs aléatoires, facilitant ainsi l'introduction du caractère aléatoire dans les programmes Python. De la génération de nombres aléatoires dans une plage spécifique au mélange de listes, en passant par la simulation d'événements aléatoires et même la génération de mots de passe aléatoires, le module Random offre un large éventail de fonctionnalités. Dans cet article de blog, nous explorerons le module PythonRandom en détail. Nous apprendrons comment générer des nombres aléatoires, effectuer

Combat réel LightGBM + réglage des paramètres de recherche aléatoire : taux de précision 96,67 % Combat réel LightGBM + réglage des paramètres de recherche aléatoire : taux de précision 96,67 % Jun 08, 2024 pm 10:45 PM

Bonjour à tous, je m'appelle Peter~LightGBM est un algorithme d'apprentissage automatique classique. Son contexte, ses principes et ses caractéristiques méritent d'être étudiés. L'algorithme de LightGBM offre des fonctionnalités telles que l'efficacité, l'évolutivité et une grande précision. Cet article présentera brièvement les caractéristiques et principes de LightGBM ainsi que quelques cas basés sur LightGBM et l'optimisation de la recherche aléatoire. Algorithme LightGBM Dans le domaine de l'apprentissage automatique, les machines à amplification de gradient (GBM) sont une classe d'algorithmes d'apprentissage d'ensemble puissants qui construisent un modèle puissant en ajoutant progressivement des apprenants faibles (généralement des arbres de décision) pour minimiser les erreurs de prédiction. Les GBM sont souvent utilisés pour minimiser les pré-

See all articles