2016-04-11 5 views
-2

Beide Spieler erhalten die gleiche Zufallszahl! Ich möchte, dass jeder Spieler eine andere Nummer bekommt, weil er würfelt. hier ist der Code:Wie kann ich für jeden Spieler verschiedene Zufallszahlen generieren?

#include <stdlib.h> 
#include <stdio.h> 
#include <time.h> 

int roll_a_dice(void); 

int main(int argc, const char *argv[]) 
{ 
    int flag; 
    int answer1 = roll_a_dice(); 
    int answer2 = roll_a_dice(); 

    printf("Die 1 (rolled by player 1): %d\n", answer1); 
    printf("Die 2 (rolled by player 2): %d\n", answer2); 

    if (answer1>answer2) { 
     printf("Player 1 is starting!\n"); 
     flag = 1; 
    } else { 
     printf("Player 2 is starting!\n"); 
     flag = 2; 
    } 

    printf("Goodbye!\n"); 

    return 0;   
} 

int roll_a_dice(void) 
{ 
    int r; 

    srand(time(NULL)); 
    r = 1 + rand() % 6; 

    return r; 
} 

Die Spieler Würfel werfen. Also muss die Nummer 1-6 sein. Wie kann ich das beheben?

+0

Setzen Sie die verschiedenen Optionen 1..6 in ein Array. Wählen Sie einen zufälligen Array-Index. Entfernen Sie dieses Element aus dem Array (indem Sie es mit dem letzten im Array austauschen und dessen Länge verkürzen). –

+1

move 'srand (Zeit (NULL));' außerhalb der Rolle_a_dice –

+1

Eine andere grobe Multi-dup –

Antwort

5

srand (time(NULL)); wird verwendet, um den Pseudozufallszahlengenerator zu initialisieren. time() mit einer Granularität von 1 Sekunde, wenn Sie die PNRG jedes Mal, wenn Sie die roll_a_dice() Funktion aufrufen, für alle Anrufe innerhalb der Granularität Zeitraum rand() wird am Ende die gleiche zufällige Nummer.

Verschieben Sie die srand (time(NULL)); aus der roll_a_dice() Funktion, rufen Sie diese nur einmal in main().

+0

Vielen Dank !! Tut mir leid, wenn das eine noobie Frage war Ich bin sehr neu im Codieren und ich versuche mein Bestes. –

+1

Warum hast du das nicht als eines der tausend Duplikate markiert: http://StackOverflow.com/search?q=[c]+srand+? – 2501

+0

Er kann immer noch den gleichen Würfelwurf für jeden Spieler bekommen. –

0

Sie müssen nur einmal säen. Verschiebe Srand an den Anfang des Hauptfensters und es wird funktionieren.

0

srand(int); wird verwendet, um initialisieren einen Samen. Von dort aus erhalten Sie bei jedem Anruf rand() einen neuen zufälligen Wert. Wenn Sie srand() in roll_a_dice() aufrufen, setzen Sie die Saat jedes Mal zurück. Bewegen Sie einfach srand() am Anfang Ihres main().

Verwandte Themen