Heim Backend-Entwicklung C++ Detaillierte Erklärung der Zufallszahlenfunktion in C++

Detaillierte Erklärung der Zufallszahlenfunktion in C++

Nov 18, 2023 pm 04:08 PM
Zufallszahlengenerator Pseudozufallszahl Zufallszahlenverteilung

Detaillierte Erklärung der Zufallszahlenfunktion in C++

Detaillierte Erklärung der Zufallszahlenfunktion in C++

Zufallszahlen spielen eine wichtige Rolle in der Computerprogrammierung. Sie können zur Simulation zufälliger Ereignisse, zur Generierung von Zufallszahlenfolgen und für andere Anwendungen verwendet werden. Die C++-Sprache bietet eine Reihe von Zufallszahlenfunktionen, um Entwicklern das Generieren und Anwenden von Zufallszahlen zu erleichtern. In diesem Artikel werden die Verwendung und Vorsichtsmaßnahmen der Zufallszahlenfunktion in C++ ausführlich vorgestellt.

In C++ umfasst die Zufallszahlenfunktion hauptsächlich zwei Aspekte: die Pseudozufallszahlengenerierungsfunktion und die Hilfszufallszahlenfunktion.

Lassen Sie uns zunächst die Funktion zur Generierung von Pseudozufallszahlen in C++ vorstellen. Die in C++11 eingeführte Zufallszahlenbibliothek <random></random> bietet eine flexiblere und effizientere Funktion zur Erzeugung von Pseudozufallszahlen. Es umfasst hauptsächlich die folgenden wichtigen Klassen: <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;
}
Nach dem Login kopieren

运行上述代码,将会输出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: Diese Klasse wird verwendet, um echte Zufallszahlen-Seeds zu generieren, die durch einen Hardware-Zufallszahlengenerator oder den generiert werden können Vom Betriebssystem bereitgestellte Zufallszahlenschnittstelle zum Erhalten.
  2. std::seed_seq: Diese Klasse wird verwendet, um eine Zufallszahlen-Seed-Sequenz zu generieren. Mehrere Seed-Werte können miteinander kombiniert werden, um eine Seed-Sequenz zu erzeugen, die eine komplexere ergibt Methode zur Zufallszahlengenerierung.
  3. std::mt19937, std::mt19937_64: Bei diesen beiden Klassen handelt es sich um Pseudozufallszahlen-Engines, die den Mersenne-Rotationsalgorithmus verwenden, um hohe Qualität Pseudozufallszahlenfolge. std::mt19937 verwendet eine 32-Bit-Ganzzahl als Status und std::mt19937_64 verwendet eine 64-Bit-Ganzzahl als Status.
  4. std::uniform_int_distribution, std::uniform_real_distribution: Diese beiden Klassen sind gleichmäßig verteilte Zufallszahlenverteiler. std::uniform_int_distribution wird verwendet, um gleichmäßig verteilte ganzzahlige Zufallszahlen zu generieren, und std::uniform_real_distribution wird verwendet, um gleichmäßig verteilte reelle Zufallszahlen zu generieren.
Verwenden Sie diese Klassen, um Pseudozufallszahlen zu generieren. Zuerst müssen wir std::random_device verwenden, um einen echten Zufallszahlen-Seed zu generieren. Verwenden Sie dann die Seed-Initialisierung über die Pseudozufallszahlen-Engine std::mt19937 oder std::mt19937_64 und verwenden Sie dann den Verteiler std::uniform_int_distribution code> oder <code>std::uniform_real_distribution generiert Zufallszahlen.

Das Folgende ist ein Beispielcode, der zeigt, wie eine gleichmäßig verteilte ganzzahlige Zufallszahl generiert wird:

rrreee

Führen Sie den obigen Code aus und 10 zufällige Ganzzahlen zwischen 1 und 100 werden ausgegeben. 🎜🎜Zusätzlich zur Pseudozufallszahlengenerierungsfunktion bietet C++ auch einige Hilfszufallszahlenfunktionen, um Zufallszahlen bequemer verarbeiten zu können. Dazu gehören: 🎜
  1. std::rand: Diese Funktion generiert eine pseudozufällige Ganzzahl zwischen 0 und RAND_MAX, der Standardwert ist RAND_MAXDer Wert ist 32767. Es ist zu beachten, dass die Funktion <code>rand normalerweise std::srand verwendet, um den Zufallszahlen-Startwert festzulegen, sie kann jedoch nur Zufallszahlen relativ geringer Qualität generieren.
  2. std::srand: Diese Funktion wird verwendet, um den Startwert des Pseudozufallszahlengenerators festzulegen. Im Allgemeinen können wir die Systemzeit als Startwert verwenden, um sicherzustellen, dass die vom Programm generierte Zufallszahlenfolge bei jeder Ausführung unterschiedlich ist.
  3. std::shuffle: Diese Funktion wird verwendet, um eine Sequenz zufällig zu mischen. Es akzeptiert zwei Iteratorparameter und ordnet die Sequenz entsprechend dem aktuellen Pseudozufallszahlengenerator neu.
🎜Hilfsfunktionen für Zufallszahlen existieren normalerweise in Form von Funktionen im C-Stil (z. B. rand und srand), die einfacher und umfangreicher sind direkt zu verwenden. Die von diesen Funktionen generierten Zufallszahlen sind jedoch von geringer Qualität und werden nicht für die Verwendung in der tatsächlichen Entwicklung empfohlen. Im Gegensatz dazu ist die Verwendung der von C++11 bereitgestellten Zufallszahlenbibliothek flexibler und effizienter. 🎜🎜Zusammenfassend bietet C++ eine Reihe von Zufallszahlenfunktionen, einschließlich Pseudozufallszahlengenerierungsfunktionen und Hilfszufallszahlenfunktionen. Unter anderem ist die Pseudozufallszahlengenerierungsfunktion flexibler und effizienter zu verwenden und wird für die Verwendung in der tatsächlichen Entwicklung empfohlen. Wenn Sie eine einfachere und direktere Möglichkeit zum Generieren von Zufallszahlen benötigen, sollten Sie die Verwendung der Hilfszufallszahlenfunktion in Betracht ziehen. Wenn Sie eine Zufallszahlenfunktion verwenden, müssen Sie darauf achten, einen geeigneten Zufallszahlen-Startwert festzulegen, um sicherzustellen, dass die generierte Zufallszahlenfolge eine hohe Qualität und Unabhängigkeit aufweist. 🎜🎜Ich hoffe, dass die Einführung in diesem Artikel den Lesern helfen kann, die Zufallszahlenfunktion in C++ besser zu verstehen und anzuwenden. Wenn Sie zufallszahlenbezogene Funktionen verwenden möchten, empfiehlt es sich, die in C++11 eingeführte Zufallszahlenbibliothek zu verwenden, um deren Flexibilität und Effizienz voll auszunutzen. 🎜

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Zufallszahlenfunktion in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Generieren Sie Zufallszahlen und Zeichenfolgen in JavaScript Generieren Sie Zufallszahlen und Zeichenfolgen in JavaScript Sep 02, 2023 am 08:57 AM

Die Möglichkeit, Zufallszahlen oder alphanumerische Zeichenfolgen zu generieren, ist in vielen Situationen praktisch. Sie können damit an verschiedenen Orten im Spiel Feinde oder Nahrung hervorbringen. Sie können es auch verwenden, um Benutzern zufällige Passwörter vorzuschlagen oder Dateinamen zum Speichern von Dateien zu erstellen. Ich habe ein Tutorial darüber geschrieben, wie man in PHP zufällige alphanumerische Zeichenfolgen generiert. Ich habe am Anfang dieses Beitrags gesagt, dass nur wenige Ereignisse wirklich zufällig sind, und das Gleiche gilt für die Zufallszahlen- oder String-Generierung. In diesem Tutorial zeige ich Ihnen, wie Sie in JavaScript eine pseudozufällige alphanumerische Zeichenfolge generieren. Generieren von Zufallszahlen in JavaScript Beginnen wir mit der Generierung von Zufallszahlen. Die erste Methode, die mir in den Sinn kommt, ist Math.random(), die einen Float zurückgibt

Der Unterschied zwischen zufällig und pseudozufällig Der Unterschied zwischen zufällig und pseudozufällig Oct 10, 2023 am 09:27 AM

Der Unterschied zwischen Zufall und Pseudozufalls liegt in der Vorhersagbarkeit, Reproduzierbarkeit, Einheitlichkeit und Sicherheit. Detaillierte Einführung: 1. Zufallszahlen können nicht vorhergesagt werden, solange Sie den Algorithmus kennen Seed, Sie können dieselbe Sequenz oder Sequenz neu generieren. 2. Reproduzierbarkeit, Zufallszahlen sind nicht reproduzierbar und die generierten Ergebnisse sind jedes Mal unabhängig, während Pseudozufallszahlen reproduzierbar sind. Ja, verwenden Sie einfach denselben Algorithmus und dieselben Seeds usw.

So verwenden Sie die Funktion random.randint() zum Generieren zufälliger Ganzzahlen in Python 2.x So verwenden Sie die Funktion random.randint() zum Generieren zufälliger Ganzzahlen in Python 2.x Jul 31, 2023 pm 12:13 PM

Python ist eine beliebte Programmiersprache, die in der Datenanalyse, beim maschinellen Lernen, in der Webentwicklung und in anderen Bereichen weit verbreitet ist. In Python stellt das Zufallsmodul eine Funktion random.randint() zum Generieren zufälliger Ganzzahlen bereit. In diesem Artikel wird erläutert, wie Sie mit der Funktion random.randint() zufällige Ganzzahlen generieren, und es werden einige Codebeispiele bereitgestellt. Zuerst müssen wir das Zufallsmodul importieren: importrandom Als nächstes können wir rando aufrufen

Höhen und Tiefen Zahlen Höhen und Tiefen Zahlen Aug 28, 2023 pm 01:41 PM

In diesem Artikel lernen wir, was eine schwankende Zahl ist, und stellen unsere Methode zur Überprüfung vor, ob eine bestimmte Zahl eine schwankende Zahl ist, indem wir eine boolesche Funktion verwenden, um nach schwankenden Zahlen zu suchen. Problemstellung Wir erhalten eine Nummer und unsere Aufgabe besteht darin, zu prüfen, ob die angegebene Nummer schwankt. Lassen Sie uns zunächst verstehen, dass eine schwankende Zahl eine Zahl ist, die nur aus zwei Arten von Zahlen besteht, wobei jede andere Zahl gleich ist. Wir können sagen, dass eine schwankende Zahl die Form „PQPQPQ“ hat, wobei P und Q zwei verschiedene Zahlen im Zahlensystem sind. Die erste und zweite Ziffer einer schwankenden Zahl können niemals gleich sein, das heißt, 11111 ist keine schwankende Zahl. Wir betrachten nicht-triviale schwankende Zahlen normalerweise nur als schwankende Zahlen, was bedeutet, dass die schwankenden Zahlen aus mindestens drei Ziffern bestehen müssen

Detaillierte Erklärung der Zufallszahlenfunktion in C++ Detaillierte Erklärung der Zufallszahlenfunktion in C++ Nov 18, 2023 pm 04:08 PM

Detaillierte Erklärung der Zufallszahlenfunktion in C++. Zufallszahlen spielen eine wichtige Rolle in der Computerprogrammierung. Sie können zur Simulation von Zufallsereignissen, zur Generierung von Zufallszahlenfolgen und für andere Anwendungen verwendet werden. Die C++-Sprache bietet eine Reihe von Zufallszahlenfunktionen, um Entwicklern das Generieren und Anwenden von Zufallszahlen zu erleichtern. In diesem Artikel werden die Verwendung und Vorsichtsmaßnahmen der Zufallszahlenfunktion in C++ ausführlich vorgestellt. In C++ umfasst die Zufallszahlenfunktion hauptsächlich zwei Aspekte: die Pseudozufallszahlengenerierungsfunktion und die Hilfszufallszahlenfunktion. Lassen Sie uns zunächst die Funktion zur Generierung von Pseudozufallszahlen in C++ vorstellen. C

Wie implementiert man eine gewichtete Zufallsauswahl in Python? Wie implementiert man eine gewichtete Zufallsauswahl in Python? Sep 11, 2023 pm 09:45 PM

Python ist eine flexible und effiziente Programmiersprache, die eine breite Palette an Low-Level-Funktionen und Bibliotheken zur Verbesserung komplexer Codierungsaufgaben bereitstellt. Eine der Aufgaben besteht darin, eine gewichtete unregelmäßige Entscheidungsfindung durchzuführen, eine messbare Strategie, bei der alles eine vordefinierte Wahrscheinlichkeit hat, ausgewählt zu werden. Im Gegensatz zur einfachen Zufallsauswahl, bei der jedes Element die gleiche Wahrscheinlichkeit hat, ausgewählt zu werden, ermöglicht uns die gewichtete Zufallsauswahl, eine Wahrscheinlichkeit für die Auswahl jedes Elements anzugeben, die variieren kann. Ziel dieses Artikels ist es, ein umfassendes Verständnis dafür zu vermitteln, wie man in Python eine gewichtete Zufallsauswahl erhält. Syntax Die wichtigste Methode in Python, die gewichtete Zufallsauswahlen ermöglicht, ist random.choices(). Dies ist die grundlegende Syntax: random.choices(popula

Python-Zufallsmodul Python-Zufallsmodul Sep 03, 2023 am 11:57 AM

In der Welt der Programmierung ist die Fähigkeit, Zufallswerte zu generieren, oft entscheidend. Unabhängig davon, ob Sie ein Spiel, eine Simulation oder ein statistisches Modell entwickeln oder einfach nur Variabilität in Ihr Programm einführen müssen, ist eine zuverlässige und effiziente Möglichkeit zur Generierung von Zufallszahlen von entscheidender Bedeutung. Hier kommt das PythonRandom-Modul ins Spiel. Das PythonRandom-Modul bietet eine Reihe von Funktionen zum Generieren von Zufallswerten und erleichtert so die Einführung von Zufälligkeiten in Python-Programmen. Von der Generierung von Zufallszahlen innerhalb eines bestimmten Bereichs über das Mischen von Listen, die Simulation zufälliger Ereignisse bis hin zur Generierung zufälliger Passwörter bietet das Random-Modul eine breite Palette an Funktionen. In diesem Blogbeitrag werden wir das PythonRandom-Modul im Detail untersuchen. Wir werden lernen, wie man Zufallszahlen generiert und durchführt

LightGBM tatsächlicher Kampf + zufällige Suchparameteranpassung: Genauigkeitsrate 96,67 % LightGBM tatsächlicher Kampf + zufällige Suchparameteranpassung: Genauigkeitsrate 96,67 % Jun 08, 2024 pm 10:45 PM

Hallo zusammen, ich bin Peter~LightGBM ist ein klassischer Algorithmus für maschinelles Lernen. Sein Hintergrund, seine Prinzipien und Eigenschaften sind sehr studienwürdig. Der Algorithmus von LightGBM bietet Funktionen wie Effizienz, Skalierbarkeit und hohe Genauigkeit. In diesem Artikel werden kurz die Merkmale und Prinzipien von LightGBM sowie einige Fälle vorgestellt, die auf LightGBM und zufälliger Suchoptimierung basieren. LightGBM-Algorithmus Im Bereich des maschinellen Lernens sind Gradient Boosting Machines (GBMs) eine Klasse leistungsstarker Ensemble-Lernalgorithmen, die durch schrittweises Hinzufügen schwacher Lernender (normalerweise Entscheidungsbäume) ein leistungsstarkes Modell erstellen, um Vorhersagefehler zu minimieren. GBMs werden oft verwendet, um Vor- und Nachteile zu minimieren.

See all articles