Ich versuche, eine Zufallszahl/einen Buchstaben mit rand() zu erstellen, aber es gibt nur die gleiche Zahl/den Buchstaben jedes Mal zurück, wenn es aufgerufen wird.Zufallszahlengenerator - keine Zufallszahl jedes Mal erzeugen
void Location::pick() {
srand(time(NULL));
x = rand() % fieldSize + 1;
int locy = rand() % fieldSize + 1; // rand y
switch (locy) {
case 1: y = 'a'; break;
case 2: y = 'b'; break;
case 3: y = 'c'; break;
case 4: y = 'd'; break;
case 5: y = 'e'; break;
}
}
fieldSize ist auf 5 eingestellt. Ich benutze srand() an der Spitze. Im Folgenden nenne ich die Funktion.
flotteSize ist auf 5 eingestellt. Ships [] ist ein Array von 5 Schiffen. setLocation() setzt den Ort des Schiffes auf den gegebenen Parameter.
Verwenden Sie nicht 'rand()', vor allem nicht 'rand()% n'. Lesen Sie mehr [hier] (http://www.azillionmonkeys.com/qed/random.html). Verwenden Sie stattdessen "srand" mit der Zeit als Parameter. –
wieder geöffnet, da der Code ein wenig anders ist. Sehr verwandt: http://stackoverflow.com/questions/37701567/calling-a-random-number-generating-member-function-doesnt-produce-entirely-rand – NathanOliver
Alles über diesen Code ist kaputt. Mehrere Seedings, die 'time (NULL)' als Seed verwenden, mit 'rand()', wobei '%' verwendet wird, um den Bereich der Zahlen zu begrenzen ... Ich weiß nicht einmal, wo ich anfangen soll. – nwp