|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2003
Messaggi: 108
|
Funzione Random in C
Ciao a tutti, qualcuno di voi ha idea di come si faccia la generazione random di numeri compresi tra un certo range senza ripetizione dei numeri?
Per il momento sono arrivato a questo: .... .... .... srand((unsigned)time(0)); for (i=1;i<n+1;i++) { num=rand()%n; vett[i+1]=num; printf("%d\n",vett[i]); } Ma per evitare la ripetizione di un numero precedentemente generato come faccio? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Non puoi, tramite solamente rand. Una sequenza di numeri non ripetuti (in sostanza, una permutazione) non può essere una sequenza scorrelata, quindi neanche propriamente casuale.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2003
Messaggi: 108
|
Penso proprio che dovrò implementare un ciclo for facendo controllare volta per volta i valori generati con quelli precedenti.
Mi sembra l'unica cosa da fare a sto punto.. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Dovresti creare un array di n elementi, estrarne uno a caso, ridurre l'array togliendo l'elemento rimosso. E' una possibile soluzione, dipende da quanto sono "tanti" i numeri che devi generare.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2003
Messaggi: 108
|
Il numero dei valori da generare viene da input, e comunque con un define Max 1000..
Adesso vedrò ke posso fare.. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Edit: la distrubuzione del codice che ti avevo messo non è corretta...
Ultima modifica di cionci : 11-11-2004 alle 16:48. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:30.



















