Problema con java
Salve ragazzi, il mio problema è il seguente.
Ho un oggetto che possiede un metodo di tipo boolean; all'avvio del programma viene avviato un timer che ogni secondo rileva il tempo $t$ trascorso dall'istante iniziale. Allora il metodo deve restituire true con una probabilità data di volta in volta da $e^(-t/tau)$ dove $tau$ è una certa costante positiva.
Come posso fare per ottenere questa probabilità?
Ho un oggetto che possiede un metodo di tipo boolean; all'avvio del programma viene avviato un timer che ogni secondo rileva il tempo $t$ trascorso dall'istante iniziale. Allora il metodo deve restituire true con una probabilità data di volta in volta da $e^(-t/tau)$ dove $tau$ è una certa costante positiva.
Come posso fare per ottenere questa probabilità?
Risposte
Non ho ben capito. Vuoi che il metodo boolean ti restituisca anche la probabilità, o che in base ad essa ti dia true o false
"TomSawyer":
Non ho ben capito. Vuoi che il metodo boolean ti restituisca anche la probabilità, o che in base ad essa ti dia true o false
secondo me e' la seconda che hai detto.
"codino75":
[quote="TomSawyer"]Non ho ben capito. Vuoi che il metodo boolean ti restituisca anche la probabilità, o che in base ad essa ti dia true o false
secondo me e' la seconda che hai detto.[/quote]
giusto.
Avevo pensato di estrarre un numero a caso compreso tra 0 e 1 con la funzione Math.random() e confrontarlo con il valore dato da $e^(-t/tau)$ e poi restituire true o false a seconda che il numero sia maggiore o minore della probabilità teorica.
Mi chiedevo se in java ci fosse a disposizione un pacchetto con funzioni che simulano distribuzioni di probabilità come quella esponenziale che mi servirebbe per risolvere questo problema.
Mi chiedevo se in java ci fosse a disposizione un pacchetto con funzioni che simulano distribuzioni di probabilità come quella esponenziale che mi servirebbe per risolvere questo problema.
Bene ragazzi, finora sono riuscito ad andare avanti...adesso è sorto un altro problema.
In pratica sto utilizzando un timer per calcolare il tempo; quando viene attivato un pulsante il timer si avvia in questo modo timer.schedule(task1, 0, 1000) dove task1 è una istanza della classe MyTask1 che ho definito in questa maniera:
class MyTask1 extends TimerTask
{
public void run()
{
\\codice...
}
}
Ho letto che all'interno di run() vanno inserite le azioni da compiere ad ogni intervallo di tempo specificato (nel nostro caso ogni secondo).
Il problema è che il programma ogni secondo dovrebbe cambiare il colore di alcune JComponent presenti nel JFrame. Come faccio all'interno del metodo run() a cambiare le proprietà delle JComponent?
Oppure esiste un modo diverso per gestire i timer?? Con questo metodo mi sembra che le possibilità siano molto limitate...tra l'altro non si può fare overriding sul metodo run() e quindi non posso passare oggetti esterni per poi manipolarli, come mi servirebbe fare in questo caso...
In pratica sto utilizzando un timer per calcolare il tempo; quando viene attivato un pulsante il timer si avvia in questo modo timer.schedule(task1, 0, 1000) dove task1 è una istanza della classe MyTask1 che ho definito in questa maniera:
class MyTask1 extends TimerTask
{
public void run()
{
\\codice...
}
}
Ho letto che all'interno di run() vanno inserite le azioni da compiere ad ogni intervallo di tempo specificato (nel nostro caso ogni secondo).
Il problema è che il programma ogni secondo dovrebbe cambiare il colore di alcune JComponent presenti nel JFrame. Come faccio all'interno del metodo run() a cambiare le proprietà delle JComponent?
Oppure esiste un modo diverso per gestire i timer?? Con questo metodo mi sembra che le possibilità siano molto limitate...tra l'altro non si può fare overriding sul metodo run() e quindi non posso passare oggetti esterni per poi manipolarli, come mi servirebbe fare in questo caso...

