PDA

Visualizza la versione completa : [C] Generare numeri random


puntino
17-06-2008, 20:29
se voglio generare numeri random fra 1 e 6 come posso fare ?
Io avevo pensato ad una cosa del genere:



int mynumber = 1 + rand(6);


Se non sbaglio rand(n) mi da un numero randome fra 0 e n-1, giusto ?
GRazie

oregon
17-06-2008, 21:39
No ... leggi la documentazione quando non sei sicuro del comportamento di una funzione

http://www.cplusplus.com/reference/clibrary/cstdlib/rand.html

int mynumber = rand() % 6 + 1;

puntino
17-06-2008, 23:24
ok grazie

menphisx
19-06-2008, 02:54
Puoi usare queste macro:


/*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))


:ciauz:

puntino
19-06-2008, 09:21
Grazie.

molto eleganti

MItaly
19-06-2008, 14:46
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 (http://forum.html.it/forum/showthread.php?s=&postid=10932779#post10932779).

nickt
19-06-2008, 16:15
Per generare un numero random devi far così:



#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

mondobimbi
19-06-2008, 19:05
Originariamente inviato da nickt
Per generare un numero random devi far così:



#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

oregon
19-06-2008, 19:47
r=1+rand()%100; // il numero random è compreso tra 0 e 100


E anche questa affermazione non e' corretta ...

nickt
19-06-2008, 21:09
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:



#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...
:ciauz: :ciauz:

Loading