Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C++] rand() errato?

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121

    [C++] rand() errato?

    Ciao,
    ho tre valori rand che dovrebbero comprendere i numeri dal 1 al 3:
    int n01 = rand() % 3 + 1;
    int n02 = rand() % 3 + 1;
    int n03 = rand() % 3 + 1;
    il problema é che per ogni esecuzione del programma il risultato é sempre lo stesso:
    3 3 2
    che sbaglio?

    Grazie, ciaooooo.....

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    che dovrei fare?

    cosi:

    int n01 = rand() % 3 + 1;
    srand(1);

    includendo time... ho cercato in internet... ma niente che mi speighi bene come funzioni.. aiuto.. anche cosi i risultati nn cambiano molto...

  4. #4
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void){
    
       int n;
       
       srand(time(NULL));
    
       n = rand() % limite + 1;
    
       return 0;
    
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    adesso mi mostra solo 1 1 1

    ti passo il codice, dovrebbe simulare una slot machine molto rudimentale:

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


    using namespace std;

    int main()
    {
    int n01;
    int n02;
    int n03;

    srand(time(NULL));

    n01 = rand() % 3 + 1;
    n02 = rand() % 3 + 1;
    n03 = rand() % 3 + 1;

    string s1;
    string s2;

    do
    {
    cout << "Inserisci un gettone nella macchinetta? [s/n] ";
    cin >> s1;

    if (s1 == "s") {
    cout << " " << n01 << " " << n02 << " " << n03 << "" << endl;
    if (n01 == n02 && n01 == n03)
    cout << "Complimenti! Hai vinto tutti i gettoni!" << endl;
    else
    cout << "Sei stato sfortunato! Riprova la prossima volta!" << endl;
    }

    cout << "Vuoi ritentare? [s/n] ";
    cin >> s2;
    } while(s2 == "s");

    system("PAUSE");
    return 0;
    }
    nn so cosa devo modificare pe fare uscire i numeri random un po in ordine...

  6. #6
    codice:
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <ctime>
    
    using namespace std;
    
    int main() {
    
       int n01;
       int n02;
       int n03;
    
       srand((unsigned)time(NULL));
    
       n01 = rand() % 3 + 1;
       n02 = rand() % 3 + 1;
       n03 = rand() % 3 + 1;
    
       string s1;
       string s2;
    
       do {
    
          cout << "Inserisci un gettone nella macchinetta? [s/n] ";
          cin >> s1;
    
          if (s1 == "s") {
    
             cout << " " << n01 << " " << n02 << " " << n03 << "" << endl;
    
             if (n01 == n02 && n01 == n03)
                cout << "Complimenti! Hai vinto tutti i gettoni!" << endl;
    
             else
                cout << "Sei stato sfortunato! Riprova la prossima volta!" << endl;
    
          }
    
          cout << "Vuoi ritentare? [s/n] ";
          cin >> s2;
    
       } while(s2 == "s");
    
    //Non usare system !!!!!!
    //system("PAUSE");
       return 0;
    
    }
    Ti prego indenta correttamente

    P.S.: qua ci starebbe bene un oggetto Randomizer, che estrae numeri casuali

  7. #7
    Precisazione:
    naturlamente parlasi sempre di numeri pseudo-random. Non possono esistere infatti algoritmi in grado di generare veri numeri casuali, senza appoggiarsi ad eventi indipendenti dall'algoritmo stesso.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    121
    ho risolto in un altro modo:

    #include <iostream>

    using namespace std;

    int main() {

    int n01;
    int n02;
    int n03;

    string s1;
    string s2;

    do {
    n01 = rand() % 3 + 1;
    n02 = rand() % 3 + 1;
    n03 = rand() % 3 + 1;

    cout << "Inserisci un gettone nella macchinetta? [s/n] ";
    cin >> s1;

    if (s1 == "s") {

    cout << " " << n01 << " " << n02 << " " << n03 << "" << endl;

    if (n01 == n02 && n01 == n03)
    cout << "Complimenti! Hai vinto tutti i gettoni!" << endl;

    else
    cout << "Sei stato sfortunato! Riprova la prossima volta!" << endl;

    }

    cout << "Vuoi ritentare? [s/n] ";
    cin >> s2;

    } while(s2 == "s");

    return 0;
    }
    così per me é piu semplice capire cosa fa il codice.. Grazie mille delle risposte... ciaooo.....

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 © 2026 vBulletin Solutions, Inc. All rights reserved.