Newsgroup: it.scienza.informatica
Titolo: Numeri casuali distinti

Ho un piccolo problema sulla generzione di un certo numero di numeri
casuali in un intervallo di interi.
Il mio problema è che devo generare 70 numeri casuali DISTINTI interi
nell'intervallo 0-300 (di interi) in C.
Dopo un giro in rete ho capito che esiste una formula di statistica che
può essere implementata in C e garantisce che i numeri siano
assolutamente DISTINTI.
Tuttavia non sono sicuro che la cosa stia propio in questi termini e non
so come implementare.
Qualcuno lo ha già fatto?
Mi potreste spiegare come fare?
Non voglio usare ne vettori con flag ne altro. Vorrei una funzione che
generi n numeri tutti distinti.
Qualcuno ne sa qualcosa?
GRAZIEEEEEEEEEEEEEEEE

 nell'intervallo 0-300 (di interi) in C.
Casuali distribuiti come? Uniformemente?
Sapendo che 300 /70 =4,2857... potresti far generare un numero casuale da 1
a 4.
Il primo numero č il numero casuale generato, il secondo č uguale al primo +
secondo numero casuale da 1 a 4, e cosě via.
Marcello.

 Marcello.
Ottima idea, ma i numeri devono anche essere in ORDINE casuale. C'e' secondo
te un modo per introdurre questo altro elemento di casualità?
Grazie, ho fatto questa domanda a più di 10 persone e tutti  mi hanno dato
risposte inutili. Davvero, grazie

 generi n numeri tutti distinti.
Infatti non ne avrai bisogno, in genere si tratta di formule che
possono essere implementate in modo iterativo con al piu' 4 variabili
coinvolte.
 
-- 
"difficilmente riusciremo ad arginare la diffusione dei virus finche' 
 esisteranno programmi come  u(z1...zn)=sel1(u z1...zn)=u" - Kleene

 risposte inutili. Davvero, grazie
Forse su it.comp.lang.c (dove hai gia' postato questa richiesta) avremmo
potuto dare risposte piu' "utili" se tu avessi chiarito fin dall'inizio
quali erano i termini del problema, visto che non ti piacciono le
soluzioni (ragionevolissime e veloci) nelle quali si utilizza un array
ausiliario.
Abbiamo anche avuto l'impressione che tu richiedessi dei numeri casuali,
ma se la soluzione (peraltro furba) di Marcello ti va bene (ordine
a parte) vuol dire che non ti interessa poi tanto la casualita',
visto che i numeri (anche a parte l'ordine) generati in quel modo non
sono tanto casuali. (non c'e' mai un gap superiore a 4 e il maggior
numero generabile e' decisamente minore di 300).
Se vuoi risposte "utili", bisogna che ti abitui a porre i problemi
in modo piu' dettagliato....
ciao,
g.

 in modo piu' dettagliato....
Non capisco la tua polemica. Su it.lang.c ho spiegato come qui cosa mi
occorreva, ma non ho avuto risposta.
Ecco tutto.
Credo che lì ci siamo un po' troppe persone che pensano di essere maghi
della programmazione (molti lo sono davvero) e per questo non leggono
nemmeno con attenzione i messaggi (ecco il problema).
Cmq, l'importante è di aver trovato la soluzione, che come vedi non era
certo quella del vettore. Sai, in un progetto universitario di algoritmi e
stritture dati, ogni particolare va studiato al meglio, non mi serve a molto
cronometrare i tempi di escuzione di un programma su una macchina.
Grazie cmq a tutti.


Mi sai indicare dove potrei trovarli?
Grazie

 cronometrare i tempi di escuzione di un programma su una macchina.
Siccome programmo da ormai 25 anni, l'universita' l'ho finita da un
pezzo e di mestiere faccio il ricercatore in
informatica, penso di essere qualificato a rispondere a proposito di
un "progetto universitario di algoritmi e strutture dati".
Come ti ripeto per l'ultima volta: i metodi che ti hanno proposto
ed in particolare l'uso dei generatori modulo 307 non ti danno una
buona generazione di numeri casuali. (In particolare il metodo mod 307,
e' stata la prima cosa che mi e' venuta in mente: non te l'ho proposta
perche' il numero di possibili sequenze casuali prodotte in quel modo
mi sembrava troppo piccolo.) Se produci molti set di 70 numeri in quel
modo, la probabilita' di avere dei set uguali e' alta.
Se a te va bene cosi', contenti tutti.
ciao,
g.

 Qualcuno ne sa qualcosa?
Leggo solo ora il tuo post qui (il primo l'ho letto su it.comp.lang.c).
Per pura curiosità, nel metodo che ti ho proposto io (quello di Zp) che
c'è che non va? Quel metodo soddisfa anche questa tua condizione
aggiuntiva.
Cristiano

 Mi sai indicare dove potrei trovarli?
Ho dato una rapida occhiata con google...
www.liceofoscarini.it/studenti/probabilita/lehmer.html
www.dsi.unifi.it/~cecilia/falaipietroni/algorit.html
www.economia.uniroma2.it/laureati/dottorati/AE/
	Econometrics_Seminar/IMetodiMonteCarlo.pdf
www.geocities.com/CapeCanaveral/Lab/1172/casuali/casuali.html
il materiale c'e', ora tocca a te ^_^
 
-- 
"Credo che davvero abbiamo fatto un capolavoro diplomatico e politico 
perche' abbiamo ancora la maggioranza del Paese che da il consenso
al Governo e abbiamo mantenuto la nostra tradizionale alleanza con 
gli USA" - Silvio Berlusconi commenta la posizione italiana sull'Iraq