come da titolo...utilizzare la funzione random...
magari con un esempietto di un programma che sceglie numeri a caso...vi ringrazio!
come da titolo...utilizzare la funzione random...
magari con un esempietto di un programma che sceglie numeri a caso...vi ringrazio!
per generare numeri casuali in C di solito si usa la funzione rand().
Prima di tutto devi includere la libreria di utilità standard
#include <stdlib.h>
Da questo momento in poi puoi utilizzare la bellissima funzione
rand()
che genera numeri casuali interi da 0 a RAND_MAX (che è molto alto).
Ora, poniamo chetu voglia simulare un dado, per cui ti servono numeri da uno a sei, ebbene la procedura standard è questa:
roll= rand()%6+1;
con questa istruzione generi numeri casuali da 1 a 6 abbastanza equiprobabili, se invece usi valori molto alti a destra del modulo, questa considerazione non è più valida.
Un'altro problema non indifferente è che i numeri casuali sono sempre gli stessi ad ogni esecuzione del programma, perché l'algoritmo con cui vengono generati è deterministico.
Pertanto occorre introdurre ogni volta un "seme" diverso, il quale sarà l'unico vero elemento casuale nel programma.
La funzione che permette di "inseminare" rand() è
srand(int)
La scelta dell'intero può essere fatta in molti modi, ma molto spesso si usa
#include <time.h>
srand(time(NULL));
Il secondo del giorno in cui il programma viene lanciato dovrebbe essere abbastanza casuale.
ricapitolando, ecco un programma che lancia un dado ad ogni pressione del tasto invio
codice:#include <stdio.h> #include <time.h> #include <stdlib.h> int main (){ int count=0; srand(time(NULL)); while (count <1000){ printf ("%d",rand()%6+1); getchar(); } exit(1); }
ti ringrazio...
mi spiegheresti alcune righe...giusto per un po di chiarezza!
allora...
le varie librerie...
poi inizializzi il contatore a 0...
la funzione srand()viene "inseminata" dal tempo...
finchè il contatore è inferiore a 1000 visualizza rand...
getchar serve per cosa in questo caso?
il cvontatore dove viene incrementato?
exit(1) cosa significa?
ti ringrazio sei stato gentilissimo...
Si è dimenticato di aumentarloOriginariamente inviato da Eris
getchar serve per cosa in questo caso?
il cvontatore dove viene incrementato?
aggiungi "count++" prima di getchar(), sennò va in loop infinito, perchè la condizione del while non si verifica mai.
Getchar lo ha messo (ma puoi benissimo toglierlo) per farsì che tu debba premere invio (o qualsiasi altro tasto) prima di far apparire il nuovo numero. Se lo levi te li stampa tutti senza che tu debba far nulla...
http://crasseux.com/books/ctutorial/...-function.htmlexit(1) cosa significa?
Tra l'altro avrebbe dovuto scrivere exit(0), visto che 1 indica la presenza di errori (uguale a return 0/1).
ok provo...vediamo se riesco a fare una cosetta...
non va
codice:int main() { int prodotto, prodBambino, num1, num2; num1 = srand(time(0)); num2 = srand(time(0)); printf("Quanto fa' %d per %d?\n", num1, num2); prodotto = num1*num2; scanf("%d", &prodBambino); if (prodotto==prodBambino) {printf("Bravo!!\n") getchar(); }/*fine if*/ else (prodotto!=prodBambino) {printf("Sbagliato prova ancora!\n") getchar(); scanf("%d", &prodBambino)};
NULL non va dichiarato, scrivilo tutto maiuscolo, in C c'è differenza tra maiuscolo e minuscolo.
Inoltre fai come dice Ibykos:
srand(time(NULL));
...
Numero = rand();
non
Numero = srand(time(NULL));
![]()
srand serve solamente ad inizializzare il generatore di numeri casuali e va usato una sola volta.Originariamente inviato da Eris
non va
codice:int main() { int prodotto, prodBambino, num1, num2; num1 = srand(time(0)); num2 = srand(time(0)); printf("Quanto fa' %d per %d?\n", num1, num2); prodotto = num1*num2; scanf("%d", &prodBambino); if (prodotto==prodBambino) {printf("Bravo!!\n") getchar(); }/*fine if*/ else (prodotto!=prodBambino) {printf("Sbagliato prova ancora!\n") getchar(); scanf("%d", &prodBambino)};
Per generare i numeri devi usare la funzione rand cosi' come ti era stata mostrata ... ma tu l'hai eliminata senza motivo ...