Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    13

    [C++]Generazione di 2 numeri pseudocasuali

    Le ho provate tutte, dato che sono agli inizi, volevo cimentarmi un un programma(gioco)
    Ma non riesco a generare 2 numeri casuali, me ne genera solo 1

    source:
    codice:
    #include <cstdlib>
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    #include <windows.h>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char player1[20], player2[20];
        int scelta;
        srand((unsigned)time(NULL));
        int d1 = rand()%7;
        srand((unsigned)time(NULL));
        int d2 = rand()%7;
        cout << "Questo programma simula una partita a dadi tra 2 persone" << endl;
        cout << "Scegli un opzione" << endl;
        cout << "1 \t GIOCA!" << endl;
        cout << "0 \t ESCI" << endl;
        cin >> scelta;
        switch(scelta)
        {
            case 1:{
                cout << "Inserisci nome player 1: \t";
                cin >> player1;
                cout << "Inserisci nome player 2: \t";
                cin >> player2;
                Sleep(1000);
                cout << player1 << " Hai fatto \t" << d1 << endl;
                Sleep(1000);
                cout << player2 << " Hai fatto \t" << d2 << endl;
                if(d1 > d2) cout << "Ha vinto \t" << player1 << endl;
                else cout << "Ha vinto \t" << player2 << endl;
                system("PAUSE");            
                    }
            case 0: return EXIT_SUCCESS;
        }
        return EXIT_SUCCESS;
        system("PAUSE");
    }
    Dov'è che sbaglio?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi utilizzare una sola volta la srand, all'inizio ... sai a cosa serve?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    13
    si genera un numero casuale con un algoritmo partendo dal seme che sarebbe il tempo.
    Ma io ne devo generare 2 di numeri casuali.

    Quindi secondo te dovrei fare
    codice:
        srand((unsigned)time(NULL));
        int d1 = rand()%7;
        int d2 = rand()%7;

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... la srand inizializza il generatore di numeri casuali. La rand ti restituisce il valore.

    Quindi la srand la chiami una volta, e la rand due volte.

    Cosi' come hai scritto adesso, funziona.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    13
    e perchè facendolo 2 volte non genera 2 numeri?
    secondo il mio ragionamento
    sei inizializzo il generatore
    e poi faccio rand
    stampa 1 numero generato
    se riinizialiddo il generatore
    e faccio rand
    non dovrebbe generare 1 altro numero

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da xx1182
    e perchè facendolo 2 volte non genera 2 numeri?
    secondo il mio ragionamento
    sei inizializzo il generatore
    e poi faccio rand
    stampa 1 numero generato
    se riinizialiddo il generatore
    e faccio rand
    non dovrebbe generare 1 altro numero
    L'inizializzazione della sequenza casuale avviene in base al tempo. Se chiami l'inizializzazione due volte in modo così ravvicinato, il tempo sarà uguale e la sequenza generata sarà la medesima. Quindi i numeri generati saranno comunque due, ma saranno uguali.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    13
    Grazie il programma funziona ora, ma sono dubbioso.
    rand stampa il numero generato da srand?
    quindi dovrebbe generare 1 numero solo

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da xx1182
    Grazie il programma funziona ora, ma sono dubbioso.
    rand stampa il numero generato da srand?
    quindi dovrebbe generare 1 numero solo
    Allora ... diciamo che srand sceglie una tra le tante sequenze disponibili ... e la rand estrae i valori della sequenza prescelta, dal primo all'ultimo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    13
    quindi la funzione rand richiama srand e le fa generare altri numeri?
    Spero di aver capito e grazie.

    (All'inizio io avevo fatto così ma mi erano usciti 2 numeri uguali per 2 volte di fila, e allora mi sono messo a cambiare il codice e fare pastrocci)

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da xx1182
    quindi la funzione rand richiama srand e le fa generare altri numeri?
    No. Quando mai ho detto che la rand chiama la srand?

    Ti ho detto che la srand si chiama una sola volta, all'inizio, per scegliere una sequenza di numeri casuali.

    La rand la usi poi nel programma, quando vuoi, per ottenere, uno dei numeri della sequenza prescelta.

    E' semplice ...

    Leggi la documentazione

    srand
    http://www.cplusplus.com/reference/c...cstdlib/srand/

    rand
    http://www.cplusplus.com/reference/c.../cstdlib/rand/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.