PDA

View Full Version : Casualità in java


sonique
26-03-2005, 14:31
Ciao Raga...
in java dovrei creare casualmente successioni di 0 e 1...come faccio?...

es: 10100100101010100010010101010101010101111110001

:sofico:

Ziosilvio
26-03-2005, 14:42
Se ricordo bene, ci sono un metodo java.lang.math.random e una classe java.util.Random --- prova a leggere la documentazione.

NOTA: generare stringhe binarie pseudorandom con buone proprietà statistiche non è semplice come sembra; ne abbiamo parlato diffusamente in un paio di thread di questa sezione.

sonique
26-03-2005, 14:49
Grazie Silvio...ma non è un problema non ho bisogno di quel rigore statistico/probabilistico...cmq la random per quel che ho visto permette di generare numeri casuali al max con un seme di partenza

Ziosilvio
26-03-2005, 15:56
Originariamente inviato da sonique
non ho bisogno di quel rigore statistico/probabilistico
Meglio così.
la random per quel che ho visto permette di generare numeri casuali al max con un seme di partenza
Allora: anzitutto, su un computer hai al massimo dei generatori pseudorandom, dato che comunque usi degli algoritmi per generare delle sequenze --- e come diceva John von Neumann (http://www-groups.dcs.st-andrews.ac.uk/~history/Mathematicians/Von_Neumann.html), "chiunque consideri metodi aritmetici di produzione di cifre casuali è, ovviamente, in uno stato di peccato".
La maggior parte di questi generatori producono una sequenza x_1, x_2,...,x_n... a partire da un valore fissato x0, detto seme della sequenza.
Quindi, una volta stabilito il seme, la sequenza è totalmente definita.
Ora, la classe Random del package java.util ha due costruttori: Random() che inizializza il seme secondo un metodo predefinito (non con un valore fisso, a quanto ho capito da un paio di esperimenti), e Random(long) che lo inizializza con un valore specifico.
A te dovrebbe essere sufficiente una variabile di tipo Random, inizializzata come ti fa più comodo.

sonique
26-03-2005, 16:05
Oddio Zio scusa ma mi sa ke nn ho capito...:oink:
Cioe per avere questa sequenza pseudocasuale di zeri ed uno come devo fare?

cisc
27-03-2005, 18:30
Io ho usato l'oggetto Random, utilizzando poi il metodo nextBoolean, che sembra ottimizzato proprio per generare valori binari casuali (true o false, 0 o 1, la stessa cosa)

sonique
27-03-2005, 18:50
Grazie ragazzio...ho risolto con la seguente istruzione:

int generate = (int) (Math.random() * 2);

e tutto funziona...provare per credere ;)