| Autore |
Discussione  |
|
|
fremyd
Advanced Member
    
 Cittā: Lecce _Pisa
958 Messaggi |
Inserito il - 23/05/2005 : 12:47:12
|
Ciao a tutti era da parekkio ke nn scrivevo un post tutto mio  Dato ke nn c' č una sezione dedicata alla programmazione (sarebbe un' idea..) scrivo qui il mio probl: ho bisogno d una spiegazione (nn troppo complessa) di come vengono implementate le funzioni random e randomize nei diversi linguaggi di Programmazione.. (in particolare in Java) I concetti generici li conosco e ho anke visto le classi java.util.Random e Math.random() di Java, ma mi servirebbe una spiegazione abbastanza dettagliata (una bella spiegazione "a parole".. tipo i parametri da cui dipende il seme di generazione, un carrellata sull' algoritmo di implementazione, ecc.. Tutti programmatori eh! ...
|
|
|
ori
Moderatore
    

Cittā: Verona
2043 Messaggi |
Inserito il - 23/05/2005 : 15:01:46
|
Generalmente i generatori di numero pseudo-casuali sono basati su gruppi finiti della classi di equivalenza degli interi rispetto alla relazione d'equivalenza modulo (intero della divisione). Ad esempio, la Z/5Z indica il gruppo delle classi resto modulo 5, ossia [0], [1], [2], [3] e [4]. Il valore 123456 appartiene alla classe di [1], mentre il valore -1 e` in [4].
Il metodo implementato in Java, secondo quanto riportato dalla documentazione, e` quello del generatore lineare congruente, che e` definito come y_{i+1} = (A y_{i} + b) mod m. Scelte opportune di A, b e m garantiscono che vengano restituiti tutti i valori possibili prima di ripeterne uno. Il seme e` il valore di y_{0}, valore iniziale, e non dipende dall'implementazione. Serve solamente per riavere la stessa sequenza di numeri.
Generalmente il seme scelto corrisponde all'istante in cui viene eseguita l'inizializzazione del generatore di numeri pseudo-casuali (che non sono puramente casuali, ma non sono distinguibili da questi via analisi statistiche), in modo da avere sequenze sempre nuove. Se vuoi maggiori informazioni teoriche e applicative, dovresti prendere un testo che parla di algebra e uno di crittografia. |
 |
|
|
fremyd
Advanced Member
    

Cittā: Lecce _Pisa
958 Messaggi |
Inserito il - 23/05/2005 : 19:10:59
|
grazie ori era proprio quello ke volevo.. (ho studiato Algebra e i numeri modulo 5.. se nn kiedo troppo vorrei qualke link utile (nn tanto sulla parte di algebra ke gia conosco.. thx  |
 |
|
|
ant21
Senior Member
   

121 Messaggi |
Inserito il - 23/05/2005 : 21:04:01
|
Citazione: Messaggio inserito da fremyd
grazie ori era proprio quello ke volevo.. (ho studiato Algebra e i numeri modulo 5.. se nn kiedo troppo vorrei qualke link utile (nn tanto sulla parte di algebra ke gia conosco.. thx 
visita il sito javadoc htt*://java.sun[.com]/j2se/1.5.0/docs/api/index.html?overview-summary.html
|
 |
|
|
fremyd
Advanced Member
    

Cittā: Lecce _Pisa
958 Messaggi |
Inserito il - 25/05/2005 : 09:50:34
|
si l' avevo guardato.. quello ke mi interesserebbe sapere č in ke modo e in quali linguaggi vengono utilizzati valori come la temperatura della cpu o il traffico di rete o il movimento del mouse in questo contesto.. Mi pare infatti di aver letto ke alcune funzioni random sfruttano questo tipo di dati per generare il seme (almeno credo) In pratica la randomize usa solo l' orologio di sistema (come succede in Pascal) o esiste qualke linguaggio dove vengono usati anke altre informazioni come quelle citate? |
 |
|
|
ori
Moderatore
    

Cittā: Verona
2043 Messaggi |
Inserito il - 25/05/2005 : 10:14:43
|
| Francamente non so come gestiscono il seme gli altri linguaggi, ma generalmente se ti permettono di avere un contruttore o un metodo per impostare il seme al valore che vuoi, puoi usare qualsiasi valore riesci ad ottenere. Diciamo che usando l'orologio di sistema sei sicuro che su qualsiasi macchina puoi mettere in esecuzione il tuo programma, mentre altri valori (temperatura, traffico, ...) non sono sempre disponibili. E poi, con l'orologio di sistema, sei praticamente sicuro di avere sequenze nuove ad ogni esecuzione. |
 |
|
|
fremyd
Advanced Member
    

Cittā: Lecce _Pisa
958 Messaggi |
Inserito il - 25/05/2005 : 10:41:50
|
mi riferivo alla situazione in cui nn 6 tu a scegliere il seme da cui partire.. Nel senso ke usi la funzione randomize e poi la random senza parametri (in qualsiasi linguaggio) |
 |
|
|
ori
Moderatore
    

Cittā: Verona
2043 Messaggi |
Inserito il - 26/05/2005 : 08:33:26
|
| Dovresti guardare le specifiche implementative delle due funzioni relativamente ad ogni linguaggio che ti interessa. Non c'e` un unico LCG (Linear Congruential Generator), quindi ognuno puo` usare quello che vuole. |
 |
|
|
fremyd
Advanced Member
    

Cittā: Lecce _Pisa
958 Messaggi |
Inserito il - 27/05/2005 : 11:13:07
|
la maggior parte dei linguaggi usano solo il clock di sistema.. cmq ormai diciamo ke ho risolto.. Ciao  |
 |
|
| |
Discussione  |
|