Wie generiere ich eine Zufallszahl in C ++?

Ich versuche ein Spiel mit würfeln, und ich brauche Zufallszahlen in es (zu simulieren, die Seiten des Würfels. Ich weiß, wie man es zwischen 1 und 6). Mit

#include <cstdlib> 
#include <ctime> 
#include <iostream>

using namespace std;

int main() 
{ 
    srand((unsigned)time(0)); 
    int i;
    i = (rand()%6)+1; 
    cout << i << "\n"; 
}

nicht sehr gut funktionieren, denn wenn ich das Programm ein paar mal, hier ist die Ausgabe die ich bekomme:

6
1
1
1
1
1
2
2
2
2
5
2

So, ich möchte einen Befehl, der erzeugt eine verschiedenen Zufallszahl jedes mal, nicht die gleiche, die 5 mal in Folge. Gibt es einen Befehl, der dies tun wird?

Kommentar zu dem Problem
Verteilung der Fragen abgesehen, im Hinterkopf behalten, dass mit Zufallszahlen kommt die Möglichkeit, immer das gleiche Ergebnis mehrmals in Folge. Wenn Sie waren garantiert nicht die gleiche Zahl zweimal in einer Zeile, die Ergebnisse würden nicht wirklich zufällig sein, würden Sie? Kommentarautor: cdhowie
Was macht Sie denken, dass diese zahlen nicht zufällig? Werfen Sie einen Würfel für real, und Sie könnte sehr gut erhalten dieses Ergebnis. Wenn Sie waren garantiert anders zwischen jedem Wurf dann würde es nicht wirklich zufällig sein würde. Kommentarautor: mattjgalloway
Lesen Sie auch eternallyconfuzzled.com/arts/jsw_art_rand.aspx, warum mit dem modulo-operator ist nicht oft eine gute Idee. Kommentarautor: Benjamin Bannier
Sie sind Missverständnis viel mehr als eine passt in ein Kommentar oder sogar eine Antwort. Sie müssen lernen, selbstständig zu pseudo-Zufallszahlen-Generatoren, über die Samen, über die Bedeutung der Kommissionierung einen wirklich zufälligen seed, und über einheitliche Distributionen. Kommentarautor: Kerrek SB
Wenn Sie Saatgut mit der Zeit. Dies bedeutet auch, dass wenn Sie führen Sie Ihr Programm mehr als einmal in der Sekunde Sie erhalten die gleiche Nummer. Kommentarautor: Martin York

InformationsquelleAutor der Frage Predictability | 2012-11-18

Schreibe einen Kommentar