Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 Cultura Informatica
 Cultura Informatica
 Pseudo Random in C
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

Albatro
Rappresentante libero - Moderatore ICD

0415_da_Marily


Regione: Puglia
Prov.: Taranto
Città: Taranto


Inserito il - 14/05/2006 : 11:22:31  Mostra Profilo  Visita l'Homepage di Albatro Invia a Albatro un Messaggio Privato  Rispondi Quotando
Ragazzi.. devo fare un programmino che inserito il "numero"(inteso come dimensione totale..) dei partecipanti in Input li estragga in modo casuale..

ho un piccolo problema, anzi 2....
prima di tutto se inserisco x es. "5" mi estrae sempre la stessa combinazione... 2 - 3 - 5 - 1 - 5 ...
ok.. ho letto che sta cosa si risolve con "srand".. ma.. ehm... nn riesco a farlo funzionare....
l'altro mio problema è che NATURALMENTE una volta estratto un numero NON deve riestrarlo più! (pseudo-random x l'appunto...)

chi mi sa dire qualcosa di utile???

* Nessuno è più schiavo di colui che ritiene di essere libero senza esserlo! (Goethe)
* C'è molto più della carne dietro questa maschera. C'è un'idea, e le idee sono a prova di proiettile (V)
* Un uomo solo che guarda il muro è un uomo solo. Ma due uomini che guardano un muro è il principio di un'evasione (Jack Folla)
* Quello che facciamo è solo una goccia nell'Oceano,ma se non lo facessimo l'Oceano avrebbe una goccia in meno! (M.T. di C.)

www.linkbari.it

http://www.facebook.com/claudio.siciliano

feeb
Cantù Che Conta Col Cayenne

neophyte

Prov.: Zara


Inserito il - 14/05/2006 : 12:05:07  Mostra Profilo  Visita l'Homepage di feeb  Clicca per vedere l'indirizzo MSN di feeb Invia a feeb un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da Albatro

Ragazzi.. devo fare un programmino che inserito il "numero"(inteso come dimensione totale..) dei partecipanti in Input li estragga in modo casuale..

ho un piccolo problema, anzi 2....
prima di tutto se inserisco x es. "5" mi estrae sempre la stessa combinazione... 2 - 3 - 5 - 1 - 5 ...
ok.. ho letto che sta cosa si risolve con "srand".. ma.. ehm... nn riesco a farlo funzionare....
l'altro mio problema è che NATURALMENTE una volta estratto un numero NON deve riestrarlo più! (pseudo-random x l'appunto...)

chi mi sa dire qualcosa di utile???



void srand(unsigned int) usa l'argomento che gli passi per inizializzare la nuova sequenza di interi pseudo-random che sarà restituita da rand() (queste sequenze sono ripetibili passando sempre lo stesso valore a srand())

un modo per inizializzare srand() con un valore sempre diverso potrebbe essere quello di fare srand(time(NULL)) (time(NULL) ti dovrebbe restituire il numero di secondi passati dalla mezzanotte dell'1 gennaio 1970)

ecco un esempio: http://www.neuralnoise.com/rand.c

comunque se ti interessa l'argomento dei PRNG un articolo carino l'ho trovato qui: http://www.phrack.org/show.php?p=59&a=15

http://www.avaaz.org/it/ - http://www.flickr.com/photos/dimethyltryptamine/

Modificato da - feeb in data
Torna all'inizio della Pagina

rat86
Utente medio


Regione: Puglia
Prov.: Bari
Città: Sannicandro di Bari


Inserito il - 14/05/2006 : 12:31:59  Mostra Profilo  Visita l'Homepage di rat86 Invia a rat86 un Messaggio Privato  Rispondi Quotando
io mi ricordo ke per far variare la seuqenz prima di utilizzare la funzione random o rand o quello che era, utilizzavo ll inizio la funzione randomize() senza alcun parmametro cosi come è scrittq
Torna all'inizio della Pagina

Albatro
Rappresentante libero - Moderatore ICD

0415_da_Marily


Regione: Puglia
Prov.: Taranto
Città: Taranto


Inserito il - 14/05/2006 : 12:45:22  Mostra Profilo  Visita l'Homepage di Albatro Invia a Albatro un Messaggio Privato  Rispondi Quotando
grazie.. proverò...

* Nessuno è più schiavo di colui che ritiene di essere libero senza esserlo! (Goethe)
* C'è molto più della carne dietro questa maschera. C'è un'idea, e le idee sono a prova di proiettile (V)
* Un uomo solo che guarda il muro è un uomo solo. Ma due uomini che guardano un muro è il principio di un'evasione (Jack Folla)
* Quello che facciamo è solo una goccia nell'Oceano,ma se non lo facessimo l'Oceano avrebbe una goccia in meno! (M.T. di C.)

www.linkbari.it

http://www.facebook.com/claudio.siciliano
Torna all'inizio della Pagina

Albatro
Rappresentante libero - Moderatore ICD

0415_da_Marily


Regione: Puglia
Prov.: Taranto
Città: Taranto


Inserito il - 14/05/2006 : 13:05:58  Mostra Profilo  Visita l'Homepage di Albatro Invia a Albatro un Messaggio Privato  Rispondi Quotando
ho fatto un passo avanti... adesso.. utilizzando la "srand" il sorteggio è diverso ad ogni apertura del programma... maaaa....
come sempre c'è un ma!
si verifica che un numero già estratto viene ri-estratto... suggerimenti???

* Nessuno è più schiavo di colui che ritiene di essere libero senza esserlo! (Goethe)
* C'è molto più della carne dietro questa maschera. C'è un'idea, e le idee sono a prova di proiettile (V)
* Un uomo solo che guarda il muro è un uomo solo. Ma due uomini che guardano un muro è il principio di un'evasione (Jack Folla)
* Quello che facciamo è solo una goccia nell'Oceano,ma se non lo facessimo l'Oceano avrebbe una goccia in meno! (M.T. di C.)

www.linkbari.it

http://www.facebook.com/claudio.siciliano
Torna all'inizio della Pagina

genius
dott. ing. cav. ...FN

Genio


Regione: Puglia
Prov.: Bari
Città: Molfetta - Caput Mundi


Inserito il - 14/05/2006 : 13:27:07  Mostra Profilo  Visita l'Homepage di genius  Clicca per vedere l'indirizzo MSN di genius  Invia a genius un messaggio Yahoo! Invia a genius un Messaggio Privato  Rispondi Quotando
per evitare le ripetizioni mi vengono in mente 2 modi (per ora):

- memorizzi in un vettore i numeri ke estrai di volta in volta e controlli ke il nuovo numero estratto nn sia presente nel vettore. Questo algoritmo nn ha una grande efficenza perkè se devi estrarre n numeri devi fare un numero di confronti pari a (n-1)! se nn ho fatto male i conti.

- crei un vettore di n elementi ed inizializzi il vettore per esempio a 0. man mano ke estrai i numeri poni per esempio ad 1 il j-esimo elemento del vettore. In questo modo fai un solo confronto ad ogni estrazione (controlli se il valore j-esimo è 0, in tal caso il numero non è stato estratto precedentemente).

poi a seconda di quello ke ti serve puoi o memorizzare in un altro vettore la sequenza dei numeri estratti, oppure stampare a video tale sequenza ;)

"...e se non hai morale
e se non hai passione
se nessun dubbio ti assale
perché la sola ragione che ti interessa avere
è una ragione sociale
soprattutto se hai qualche dannata guerra da fare
non farla nel mio nome
non farla nel mio nome
che non hai mai domandato la mia autorizzazione
se ti difenderai non farlo nel mio nome
che non hai mai domandato la mia opinione..."

Un blog farlocco
Torna all'inizio della Pagina

feeb
Cantù Che Conta Col Cayenne

neophyte

Prov.: Zara


Inserito il - 14/05/2006 : 13:27:40  Mostra Profilo  Visita l'Homepage di feeb  Clicca per vedere l'indirizzo MSN di feeb Invia a feeb un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da Albatro

si verifica che un numero già estratto viene ri-estratto... suggerimenti???



a voler fare una cosa figa, puoi generare una permutazione casuale degli interi 1..n

http://camino.rutgers.edu/ut/utsa/cs3343/lecture25.html

se no ti basta controllare che un numero non sia gia' uscito (magari li salvi in un vettore)

http://www.avaaz.org/it/ - http://www.flickr.com/photos/dimethyltryptamine/
Torna all'inizio della Pagina

feeb
Cantù Che Conta Col Cayenne

neophyte

Prov.: Zara


Inserito il - 14/05/2006 : 19:57:12  Mostra Profilo  Visita l'Homepage di feeb  Clicca per vedere l'indirizzo MSN di feeb Invia a feeb un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da genius

per evitare le ripetizioni mi vengono in mente 2 modi (per ora):

- memorizzi in un vettore i numeri ke estrai di volta in volta e controlli ke il nuovo numero estratto nn sia presente nel vettore. Questo algoritmo nn ha una grande efficenza perkè se devi estrarre n numeri devi fare un numero di confronti pari a (n-1)! se nn ho fatto male i conti.

- crei un vettore di n elementi ed inizializzi il vettore per esempio a 0. man mano ke estrai i numeri poni per esempio ad 1 il j-esimo elemento del vettore. In questo modo fai un solo confronto ad ogni estrazione (controlli se il valore j-esimo è 0, in tal caso il numero non è stato estratto precedentemente).

poi a seconda di quello ke ti serve puoi o memorizzare in un altro vettore la sequenza dei numeri estratti, oppure stampare a video tale sequenza ;)



mittico

terzo modo:

http://www.neuralnoise.com/randperm.c (non fare caso ai nomi delle variabili..)

praticamente inizializza un vettore con gli n elementi da permutare (1..n in questo caso) e poi scambia gli elementi da 1 a n con un altro a caso, cosi' non ti serve verificare se un elemento e' gia' uscito o meno

magia! O(n)!

http://www.avaaz.org/it/ - http://www.flickr.com/photos/dimethyltryptamine/

Modificato da - feeb in data
Torna all'inizio della Pagina

Albatro
Rappresentante libero - Moderatore ICD

0415_da_Marily


Regione: Puglia
Prov.: Taranto
Città: Taranto


Inserito il - 14/05/2006 : 23:17:13  Mostra Profilo  Visita l'Homepage di Albatro Invia a Albatro un Messaggio Privato  Rispondi Quotando
grazie feeb e genius... proverò le varie proposte...
PS: feeb...... stè propr' sott' eh?

* Nessuno è più schiavo di colui che ritiene di essere libero senza esserlo! (Goethe)
* C'è molto più della carne dietro questa maschera. C'è un'idea, e le idee sono a prova di proiettile (V)
* Un uomo solo che guarda il muro è un uomo solo. Ma due uomini che guardano un muro è il principio di un'evasione (Jack Folla)
* Quello che facciamo è solo una goccia nell'Oceano,ma se non lo facessimo l'Oceano avrebbe una goccia in meno! (M.T. di C.)

www.linkbari.it

http://www.facebook.com/claudio.siciliano
Torna all'inizio della Pagina

genius
dott. ing. cav. ...FN

Genio


Regione: Puglia
Prov.: Bari
Città: Molfetta - Caput Mundi


Inserito il - 14/05/2006 : 23:58:44  Mostra Profilo  Visita l'Homepage di genius  Clicca per vedere l'indirizzo MSN di genius  Invia a genius un messaggio Yahoo! Invia a genius un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da feeb

Citazione:
Messaggio inserito da genius

per evitare le ripetizioni mi vengono in mente 2 modi (per ora):

- memorizzi in un vettore i numeri ke estrai di volta in volta e controlli ke il nuovo numero estratto nn sia presente nel vettore. Questo algoritmo nn ha una grande efficenza perkè se devi estrarre n numeri devi fare un numero di confronti pari a (n-1)! se nn ho fatto male i conti.

- crei un vettore di n elementi ed inizializzi il vettore per esempio a 0. man mano ke estrai i numeri poni per esempio ad 1 il j-esimo elemento del vettore. In questo modo fai un solo confronto ad ogni estrazione (controlli se il valore j-esimo è 0, in tal caso il numero non è stato estratto precedentemente).

poi a seconda di quello ke ti serve puoi o memorizzare in un altro vettore la sequenza dei numeri estratti, oppure stampare a video tale sequenza ;)



mittico

terzo modo:

http://www.neuralnoise.com/randperm.c (non fare caso ai nomi delle variabili..)

praticamente inizializza un vettore con gli n elementi da permutare (1..n in questo caso) e poi scambia gli elementi da 1 a n con un altro a caso, cosi' non ti serve verificare se un elemento e' gia' uscito o meno

magia! O(n)!



wow! cmq la seconda proposta mia è ank'essa O(n) ;)

"...e se non hai morale
e se non hai passione
se nessun dubbio ti assale
perché la sola ragione che ti interessa avere
è una ragione sociale
soprattutto se hai qualche dannata guerra da fare
non farla nel mio nome
non farla nel mio nome
che non hai mai domandato la mia autorizzazione
se ti difenderai non farlo nel mio nome
che non hai mai domandato la mia opinione..."

Un blog farlocco
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,25 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000