Difficoltà sull'utilizzo della funzione srand (c++)

Conan il rabarbaro

Nuovo Utente
4
0
Salve a tutti. Mi sapreste spiegare come si utilizza la funzione srand? Ho provato a cercare, e ho trovato questo esempio in cui vengono generati valori casuali da 3 a 6, continuando però a non capire come debba essere utilizzata.
Codice:
void random_cod(char codice[], int dim)
{
     srand(time(NULL));
     int a;
     char b;
     b=0;
     a=0;

     while(a<dim)
     {
               b=rand();
               while(b<3 || b>6)
               {
                         b=rand();  
                         b=(b%4)+3;   
               }
               cout<<c<<" ";
               codice[a]=b;
               a++;
     }
}
In particolare, a me servirebbe generare in modo casuale i numeri da 1 a 4. Grazie in anticipo per le risposte!
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Salve a tutti. Mi sapreste spiegare come si utilizza la funzione srand? Ho provato a cercare, e ho trovato questo esempio in cui vengono generati valori casuali da 3 a 6, continuando però a non capire come debba essere utilizzata.
Codice:
void random_cod(char codice[], int dim)
{
     srand(time(NULL));
     int a;
     char b;
     b=0;
     a=0;

     while(a<dim)
     {
               b=rand();
               while(b<3 || b>6)
               {
                         b=rand();  
                         b=(b%4)+3;   
               }
               cout<<c<<" ";
               codice[a]=b;
               a++;
     }
}
In particolare, a me servirebbe generare in modo casuale i numeri da 1 a 4. Grazie in anticipo per le risposte!

la funzione rand è quella che crea un numero pseudo-random. srand serve per inizializzare la funzione e time(NULL) è il seme. (mi pare sia cosi, è tardi :asd:)
Comunque, posto b = rand(), allora b%4 = numero random compreso da 0 a 3, a questo aggiungici il +3 e ottieni un numero nel range da 3 a 6.
Per ottenere un numero da 1 a 4, fai (rand()%4)+1. Ovvero randomizza un numero da 0 a 3 (entrambi compresi), ci aggiungi un +1 e ottieni un numero da 1 a 4 (compresi)
 
Ultima modifica:
  • Mi piace
Reazioni: Conan il rabarbaro

Conan il rabarbaro

Nuovo Utente
4
0
la funzione rand è quella che crea un numero pseudo-random. srand serve per inizializzare la funzione e time(NULL) è il seme. (mi pare sia cosi, è tardi :asd:)
Comunque, posto b = rand(), allora b%4 = numero random compreso da 0 a 3, a questo aggiungici il +3 e ottieni un numero nel range da 3 a 6.
Per ottenere un numero da 1 a 4, fai (rand()%4)+1. Ovvero randomizza un numero da 0 a 3 (entrambi compresi), ci aggiungi un +1 e ottieni un numero da 1 a 4 (compresi)
Grazie mille!
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
La funzione rand genera numero pseudo-casuali: come tale, pertanto, il suo output varia in funzione di un parametro detto seme (seed). I generatori di numeri pseudo-casuali (PRNG) hanno la caratteristica di produrre lo stesso output a parità di seed. Se scrivessi un programma che scrive 3 valori di rand(), tutte le volte che lo eseguiresti avresti il medesimo risultato.

Devi dunque fare in modo che questo seed cambi. Per fare questo puoi utilizzare il numero di secondi passati finora che, come potrai immaginare, aumenta continuamente e lo ottieni con time(NULL)/time(0). srand non fa altro che dare il seed a rand.
 
  • Mi piace
Reazioni: rodhellas e Mursey

Entra

oppure Accedi utilizzando