|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
[dev c++] generare numeri random
Scusate ma la ricerca non funziona e anche se sicuramente sarà stato chiesto altre volte mi potete dire qual'è la funzione per generare numeri casuali e quale libreria la include?
Grazie. |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 965
|
Librerie:
time.h stdlib.h [non ricordo se ci vuole la srand.h] metodo: srand((unsigned)time(NULL)); int h h = rand(); |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
Grazie, mi sai dire anche come posso dirgli di generarne uno tra 0 e 100 per esempio?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
h = rand ()%101;
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
Quote:
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
Quote:
Grazie a tutti. |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
Quote:
|
|
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Jul 2002
Città: Lucca
Messaggi: 965
|
auahauahauahuahau
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
Leggendo qualcosa in giro su internet ho sentito che la funzione di cui parlavi è legata ai secondi dell'orologio, quindi se si inserisce in un ciclo for per avere 10 numeri casuali si avranno 10 numeri casuali uguali, almeno così ho letto.
Me lo confermate? Ho letto che un altro modo può essere questo: numero = 0||1||2 un attimino rudimentale, ma se funziona mi può stare bene. Cosa mi dite? Ultima modifica di -Ivan- : 25-02-2005 alle 17:04. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
Porc... proprio quello che temevo, e non c'è una funzione che generi numeri casuali in altro modo?
Io devo generare per lo più numeri da 0 a 100, come posso farlo senza dover forzare dei ritardi? Non riesco a capire come generi questi numeri basandosi sui secondi, mi sembrava più ovvio che lo facesse con i micro almeno. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
allora dovresti informarti su come funziona la funzione rand().
in pratica la rand() produce dei numeri pseudocasuali compresi tra 0 e RAND_MAX (che è una costante definita in stdlib.h credo). per generare il numero la funzione legge un valore detto seme. quando genera il numero la rand() cambia il valore del seme impostandolo al valore generato, questo fa sì che la sequenza di numeri "sembri" casuale. per inizializzare il seme si usa la funzione srand() tuttavia se io in un programma passo come parametro alla srand un numero costante (es. srand(5)) ogni volta che il programma verrà eseguito questo produrrà sempre la stessa sequenza di numeri casuali. quindi bisogna cercare un modo per impostare il seme ad un valore casuale e questo si fa proprio passando a srand() come parametro il valore restituito dalla time(). penso che ti abbia chiarito un po' le idee. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 869
|
io ho lo stesso problema nella generazione di numeri casuali in cicli a causa di una esecuzione troppo veloce. Ora, dopo aver letto nei vari post come funziona la rand() mi è rimasto questo dubbio.
la srand genera il seme dal quale la rand genererà la sequenza pseudocasuale, per esempio supponiamo che con il seme a 5 la sequenza pseudo casuale sia : 3,7,15,21,23,......... E' chiaro che se il seme è sempre lo stesso, ad ogni esecuzione del programma si otterrà sempre la stessa sequenza pseudocasuale. Tuttavia, se invoco tre volte di seguito la funzione rand quest'ultima non dovrebbe restituirmi 3,7,15 (scegliere i primi tre numeri della famosa lista casuale)? Invece nel ciclo viene sempre scelto 3 come mai? Cosa c'entra l'orologio di sistema nella scelta dei numeri della sequenza pseudocasuale? |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
una soluzione un po estrema:
Codice:
int GetSeed(){
int seme;
__asm{
rdtsc;
mov seme,eax;
}
return seme;
}
questo ovviamente se avete bisogno di cambiare seme in un tempo < 1sec (la risoluzione di time() se nn ricordo male) ciauz Ultima modifica di The3DProgrammer : 22-03-2005 alle 00:48. |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
cosa fa l'istruzione rdtsc?
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
legge il timestamp counter.
Il timestamp counter è un MSR ( Model specific register) a 64 bit il cui contenuto viene incrementato di 1 ogni ciclo di clock. rdtsc copia i 64 bit dell'MSR in EDX:EAX. ciauz |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Aug 2008
Città: Perugia (Dintorni)
Messaggi: 742
|
ciao ragazzi vorrei generare 6 numeri casuali compresi da 1 a 90 come posso scrivere il mio algoritmo in c++?
Sto cercando su internet ma non ho trovato granchè... Aiutatemi please
__________________
My PC: Case: Corsair 600T Special Edition White Cpu:Intel i7-10700F MoBo:MSI Z490-A PRO Ram:32GB VENGEANCE RGB PRO SL HDD:SSD Samsung 980 PRO 500 GB + Samsung 870 EVO 1 TB + 1 HDD 1TB Western Digital Black VGA:Gigabyte AORUS GTX 1080 Ti PSU:XFX PRO 850W Schermo:Asus VS247H Unità Ottiche:LG BH16NS40 SO:Windows 10 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:34.



















