Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230

    [C] Generare numeri random

    se voglio generare numeri random fra 1 e 6 come posso fare ?
    Io avevo pensato ad una cosa del genere:

    codice:
    int mynumber = 1 + rand(6);
    Se non sbaglio rand(n) mi da un numero randome fra 0 e n-1, giusto ?
    GRazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    No ... leggi la documentazione quando non sei sicuro del comportamento di una funzione

    http://www.cplusplus.com/reference/c...dlib/rand.html

    int mynumber = rand() % 6 + 1;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    ok grazie

  4. #4
    Puoi usare queste macro:
    codice:
    /*Un numero da 1 a limit*/
    #define random(limit) (rand() % (limit) + 1)
    /*Un numero da minLimit a maxLimit*/
    #define random_range(minLimit, maxLimit) ((minLimit) + (rand() % ((maxLimit) - (minLimit)) + 1))

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    Grazie.

    molto eleganti

  6. #6
    Il codice di menphisx funziona finché la differenza tra minLimit e maxLimit è inferiore o uguale a RAND_MAX, ma se ti serve una gamma più ampia devi ricorrere a questa funzione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    153
    Per generare un numero random devi far così:

    codice:
    #include <stdlib.h>       //funzioni srand e rand
    #include <time.h>         // per la funzione time
    main()
    {
    int a=0,t=0,r=0,cont=0,nmax=5;          // inizializzazione delle variabili
    srand((int)time(0));      // inizializzazione della funzione random
    r=1+rand()%100;           // il numero random è compreso tra 0 e 100
    Niente è impossibile...

  8. #8
    Originariamente inviato da nickt
    Per generare un numero random devi far così:

    codice:
    #include <stdlib.h>       //funzioni srand e rand
    #include <time.h>         // per la funzione time
    main()
    {
    int a=0,t=0,r=0,cont=0,nmax=5;          // inizializzazione delle variabili
    srand((int)time(0));      // inizializzazione della funzione random
    r=1+rand()%100;           // il numero random è compreso tra 0 e 100
    veramente chiedeva un numero random tra 1 e 6, penso che voglia simulare il tiro di un dado, e la risposta la hanno già data.
    E poi a cosa servono a, t, r, cont, nmax ? e perchè nmax vale 5 ?
    Infine main deve ritornare un int, e meglio esplicitarlo come è meglio non dichiarare più di una variabile su una riga.
    ciao
    sergio

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    r=1+rand()%100; // il numero random è compreso tra 0 e 100
    E anche questa affermazione non e' corretta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    153
    Quello è un pezzo di codice di un mio programma che simula l'uscita di un numero casuale che deve essere indovinato "indovina un numero" con un selettore di difficoltà e senza funzioni...

    cosi:

    codice:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <time.h>
    main()
    {
      int a,r,t,s,i=0,nMax=6,limite=0;
      char risp='s';
      while(risp=='s')
      {
         system("cls");
         printf("\nProgramma indovina un numero");
         printf("\nHai a disposizione un numero di tentativi:%d\n\n ",nMax);
         printf("\n facile (1)""\n medio (2)""\n difficile (3)");
         printf("\nSeleziona il livello di difficolta':");
         scanf("%d",&s);
         if(s==1)
         {
           printf("indovina un numero da 0 a 10");
           // estrazione del numero casuale fra 0 e 100//
           srand((int)time (0));
           r=1+rand()%10;
           i=0;
           //chiede all'utente il numero finchè non viene indovinato//
           while(a!=r && i< nMax)
           {
             printf("\ninserisci un numero: [%d/%d]",i,nMax);
             scanf("%d",&a);
             if(a<r)
             {
                 printf("\ninserisci numero maggiore");
             }
             else
             {
                 printf("\ninserisci un numero minore");
             }
             i++;
           }
           if (a==r)
           {
             printf("\nHai indovinato!!!");
           }
           else
           {
             printf("\nNon hai indovinato ritenta");
           }
           printf("\nVuoi continuare?[s/n]");
           risp=getch();
       }
       if(s==2)
       {  
           printf("indovina un numero da 0 a 50");
           // estrazione del numero casuale fra 0 e 100//
           srand((int)time (0));
           r=1+rand()%50;
           i=0;
           //chiede all'utente il numero finchè non viene indovinato//
           while(a!=r && i< nMax)
           {
             printf("\ninserisci un numero: [%d/%d]",i,nMax);
             scanf("%d",&a);
             if(a<r)
             {
                 printf("\ninserisci numero maggiore");
             }
             else
             {
                 printf("\ninserisci un numero minore");
             }
             i++;
         }
         if (a==r)
         {
           printf("\nHai indovinato!!!");
         }
         else
         {
           printf("\nNon hai indovinato ritenta");
         }
         printf("\nVuoi continuare?[s/n]");
         risp=getch(); 
         } 
         if(s==3)
         {
                 printf("indovina un numero da 0 a 100");
                  // estrazione del numero casuale fra 0 e 100//
           srand((int)time (0));
           r=1+rand()%100;
           i=0;
           //chiede all'utente il numero finchè non viene indovinato//
           while(a!=r && i< nMax)
           {
             printf("\ninserisci un numero: [%d/%d]",i,nMax);
             scanf("%d",&a);
             if(a<r)
             {
                 printf("\ninserisci numero maggiore");
             }
             else
             {
                 printf("\ninserisci un numero minore");
             }
             i++;
         }
         if (a==r)
         {
           printf("\nHai indovinato!!!");
         }
         else
         {
           printf("\nNon hai indovinato ritenta");
         }
         printf("\nVuoi continuare?[s/n]");
         risp=getch();
         } 
         if(s>3)
         {
                system("cls");
         printf("\nProgramma indovina un numero");
         printf("\nHai a disposizione un numero di tentativi:%d\n\n ",nMax);
         printf("\n facile (1)""\n medio (2)""\n difficile (3)");
         printf("\nSeleziona il livello di difficolta':");
         }         
       }   
     
    }
    ciao...
    Niente è impossibile...

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.