|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Messaggi: n/a
|
[C] Numero casuale con C
Buongiorno, sono nuovo di qui, molti mi conoscono negli altri forum come Madchemist, ho 13 anni e sono un "appassionato" di programmazione, ovviamente non è che io possa sapere molto, pertanto vi chiedo di spiegarmi le cose come le spieghereste a vostra nonna.
Sono più ferrato sui linguaggi di programmazione per il web (html, php, Js) e sui linguaggi di programmazione per i microntrollori (assembler), sono abbastanza astemio di linguaggi come il C e il VB6 e il Perl. Cmq la mia domanda è... Come si ottiene un numero casuale con C? |
![]() |
![]() |
#2 |
Member
Iscritto dal: Apr 2007
Messaggi: 223
|
Devi utilizzare la funzione rand();
Codice:
#include <stdio.h> #include <time.h> int main(){ srand(time(NULL)); // inizializzo il timer casuale. printf("Rand function: %d", rand()%6); return 0; } |
![]() |
![]() |
![]() |
#3 |
Messaggi: n/a
|
Ti ringrazio.
![]() Scusa se sono insistente, ma non riesco a compilare. Il compilatore mi segna errore su questa riga: srand(time(NULL)); // inizializzo il timer casuale. Cos' è che non va? Grazie per l' attenzione. Ultima modifica di Madchemist : 14-10-2007 alle 06:26. |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 869
|
Quote:
![]()
__________________
Notebook: MBP 15 i7 Retina, (Mid 2014) |
|
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Jun 2007
Messaggi: 36
|
L'esempio portato dall'utente dad_89 per la generazione di numeri casuali non e' ottimale, la spiegazione del motivo e' disponibile nell'ottima guida, presente in questo stesso forum, dell'utente Ziosilvio: http://www.hwupgrade.it/forum/showthread.php?t=1196677
Nota per il moderatore: Perche' tale guida non e' in rilievo (potrei pero' non averla trovata io, nel qual caso non considerare questa nota), l'ho dovuta cercare con Google. |
![]() |
![]() |
![]() |
#6 |
Messaggi: n/a
|
OK, risolto l' arcano mistero, grazie a tutti.
Bisognava aggiungere la libreria (grazie fracarro): #include <stdlib.h> Inoltre ci voleva anche: system ("pause"); sennò appena appare il numero la finestrina si chiude... GRAZIE A TUTTI. EDIT: Stresso ancora, come faccio a mettere il risultato casuale in una variabile? Ultima modifica di Madchemist : 14-10-2007 alle 20:33. |
![]() |
![]() |
#7 |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Forse perché dovrei aggiornarla... non parlo né di test statistici per misurare la bontà di un generatore, né di RNG in altri linguaggi tipo Java o Python, né (mancanza oggi abbastanza grave) del Mersenne Twister...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
![]() |
![]() |
![]() |
#8 |
Messaggi: n/a
|
Scusate come faccio a mettere il risultato casuale in una variabile?
|
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
Codice:
int variabile; variabile=rand()%6;
__________________
![]() ![]() |
![]() |
![]() |
![]() |
#10 | |
Member
Iscritto dal: Apr 2007
Messaggi: 223
|
Quote:
|
|
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Jan 2001
Città: Rimini
Messaggi: 197
|
quoto.. puoi sostituirla con una getchar() che è standard quindi portabile.
__________________
Linux + xBox360 + iPod. Ognuno al suo posto. |
![]() |
![]() |
![]() |
#12 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 14
|
scusate leggo ora....ma per fermare il programma in quel punto anzikè con system("pause") utilizzando una getchar() cm si usa?...perkè a me hanno sempre insegnato così...
|
![]() |
![]() |
![]() |
#13 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Comunque, si può anche fare così, e terminare il programma con la pressione di Invio: Codice:
/* prima si pulisce lo standard input */ while (getchar() != EOF) ; /* poi si aspetta la pressione di Invio */ while (getchar() != '\n') ;
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
![]() |
![]() |
![]() |
#14 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 14
|
grazie...ho imparato una cosa nuova...
![]() |
![]() |
![]() |
![]() |
#15 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
ERRATA CORRIGE
Quote:
Adesso non riesco a ricordare se getchar può restituire EOF anche quando stdin è associato alla tastiera. Comunque, alla peggio, si può usare due volte la rilevazione del newline, anziché una volta EOF e la volta dopo newline. Oppure, si toglie la bufferizzazione allo standard input; ma questo si fa in modi diversi su sistemi operativi diversi (e io non so come ![]()
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:43.