[C] Random

Andrea801
sapete scrivere un programma che assegni alla variabile n degli interi casuali compresi tra i seguenti intervalli?

a) 1<= n <= 100

b) -1<= n <= 1000

grazie

Risposte
eugenio.amitrano
int min, max;
int n;

char ch;

printf("\nInserisci il minimo: ");
scanf("%d", &min);

printf("\nInserisci il massimo: ");
scanf("%d", &max);

do {
	n = min + (rand() % (1 + max - min));
	printf("\nn = %d", n);
	printf("\tPremi un tasto per continuare o ESC per uscire.");
	ch = getch();
} while (ch != ESC);

vict85
@eugenio.amitrano : sarebbe meglio non fornissi interamente la risposta quando l'autore non mostra i suoi tentativi. La prossima volta fornisci un aiuto meno generico. Comunque il tuo codice è per il 90% inutile e manca la chiamata a srand.


@Andrea80 : il regolamento prevede un tuo tentativo di risoluzione. Lo scopo di questa regola è che risolvere gli esercizi da soli, eventualmente con un aiuto, è più istruttivo che vedere la soluzione.

Per i tuoi scopi ti invito quindi a vedere le funzioni srand e rand. La versione italiana dello stesso sito è molto più incompleta. Comunque srand va chiamato solo una volta e per i tuoi scopi è suggeribile usarlo con la funzione time(0).

vict85
Se invece dici C ma intendi C++ potresti anche vedere la nuova libreria random del C++ (introdotta nello standard del 2011). Questa libreria è molto più completa e versatile della precedente e possiede proprietà statistiche migliori. Non penso che però il tuo professore lo accetterebbe e comunque è più difficile da usare.

Andrea801
scusate sono nuovo. Non mi ero posto il problema. La prossima volta proverò a fornirmi una mia soluzione.

vict85
Ti è chiaro come creare un numero casuale intero compreso tra due valori?

eugenio.amitrano
"vict85":
@eugenio.amitrano : sarebbe meglio non fornissi interamente la risposta quando l'autore non mostra i suoi tentativi. La prossima volta fornisci un aiuto meno generico. Comunque il tuo codice è per il 90% inutile e manca la chiamata a srand.


Ciao vict85,

mi dispiace e la prossima volta sarò più attento!

Conosco le regole del forum e non pensavo di averle violate.

Ho pensato che la mia risposta, o meglio il codice, essendo una generalizzazione degli esercizi presentati da Andrea80 e non essendo quindi una risoluzione diretta, poteva essere un valido aiuto per imparare a trattare tutti i problemi di questo tipo, fornendo la visione dell'intervallo min-max.

Inoltre, ho pensato che la chiamata ad srand poteva essere inutile allo scopo.

Insomma, ho pensato che per Andrea80, prendere questo codice, copiarlo nel compilatore dentro un main e lanciarlo in esecuzione lo avrebbe aiutato molto a capire come svolgere tutti gli esercizi dello stesso genere.

Mi rendo conto che è sempre più difficile aiutare qualcuno senza commettere errori... per fortuna che c'è chi controlla.

Un saluto, Eugenio

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.