n° 219
Novembre 2017
Dicembre 11, 2017, 09:09:15 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Funzione che ritorna numero random (con plobemi)  (Letto 1508 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
beppo63
Jr. Member
**

Karma: +0/-102
Scollegato Scollegato

Messaggi: 97


Mostra profilo
« inserita:: Gennaio 25, 2017, 07:23:40 »

Salve a tutti !
Ho un problema con una funzione che mi ritorna un numero casuale a ogni chiamata !
Essa infatti in questo modo funziona . Ma se tolgo lo _sleep(700) oppure ne diminuisco troppo il valore , la casualità dei numeri ritornati non è più corretta !
Avete qualche consiglio ?
Ringrazio anticipatamente !
Codice:
#include<stdio.h>
int n_casuale(int lunghezza)
{
    int d;
    srand(time(NULL));
    d=1+(rand()%lunghezza-1);
    _sleep(700);
    if(d==0)d=1;
    return d;
}
int main()
{
int ritorno_numero_casuale=0;

inizio:
ritorno_numero_casuale=n_casuale(10);
printf("%d ",ritorno_numero_casuale);
goto inizio;
}
Registrato
Max.Riservo
Global Moderator
Sr. Member
*****

Karma: +24/-0
Scollegato Scollegato

Messaggi: 850



Mostra profilo
« Risposta #1 inserita:: Gennaio 26, 2017, 10:20:34 »

Salve a tutti !
Ho un problema con una funzione che mi ritorna un numero casuale a ogni chiamata !
Essa infatti in questo modo funziona . Ma se tolgo lo _sleep(700) oppure ne diminuisco troppo il valore , la casualità dei numeri ritornati non è più corretta !
Avete qualche consiglio ?
Ringrazio anticipatamente !
Codice:
#include<stdio.h>
int n_casuale(int lunghezza)
{
    int d;
    srand(time(NULL));
    d=1+(rand()%lunghezza-1);
    _sleep(700);
    if(d==0)d=1;
    return d;
}
int main()
{
int ritorno_numero_casuale=0;

inizio:
ritorno_numero_casuale=n_casuale(10);
printf("%d ",ritorno_numero_casuale);
goto inizio;
}
Trova un altro modo di inizializzare la funzione srand() .....
Registrato

I Moderatori invitano tutti gli Utilizzatori del forum a prendere visione del REGOLAMENTO e a rispettarlo.
beppo63
Jr. Member
**

Karma: +0/-102
Scollegato Scollegato

Messaggi: 97


Mostra profilo
« Risposta #2 inserita:: Gennaio 26, 2017, 03:18:40 »

Ho semplicemente spostato lo srand(time(NULL)); da la funzione secondaria alla funzione principale int main()
Codice:
#include<stdio.h>
int n_casuale(int lunghezza)
{
    int d,e;
    d=1+(rand()%lunghezza-1);
    e=d;
    if(d==0)d=1;
    d=1+(rand()%lunghezza-1);
    if(d==e)d=d+0;
    return d;
}
int main()
{
srand(time(NULL));
int ritorno_numero_casuale=0;

inizio:
ritorno_numero_casuale=n_casuale(10);
printf("%d ",ritorno_numero_casuale);
goto inizio;
}

Registrato
oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #3 inserita:: Gennaio 26, 2017, 09:09:19 »

La srand va utilizzata una sola volta all'inizio per inizializzare la sequenza di valori random.

Non usare un goto ma un ciclo con un do ... while ...
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines