Sono a conoscenza dell'algoritmo di Knuth per la generazione di numeri distribuiti casuali di Poisson (di seguito in Java) ma come faccio a tradurlo nel chiamare un metodo, generateEvent()
, casualmente nel tempo?Come posso generare eventi casuali discreti con una distribuzione di Poisson?
risposta
Se si desidera simulare l'orario di arrivo tra gli eventi, si desidera la distribuzione esponenziale.
Date un'occhiata a Pseudorandom Number Generator - Exponential Distribution
il codice sarà quindi simile a questa:
// Note L == 1/lambda
public double poissonRandomInterarrivalDelay(double L) {
return (Math.log(1.0-Math.random())/-L;
}
...
while (true){
// Note -- lambda is 5 seconds, convert to milleseconds
long interval= (long)poissonRandomInterarrivalDelay(5.0*1000.0);
try {
Thread.sleep(interval);
fireEvent();
}
I numeri casuali Poisson si sta generando, come detto Scott, rappresenta la frequenza dei tuoi eventi. Una volta ottenuta la frequenza, puoi adattare le loro occorrenze all'intervallo utilizzando una seconda distribuzione, ad esempio Uniforme.
Supponiamo che il numero di eventi generati per un intervallo di N sia k. Quindi è sufficiente generare (k + 1) numeri casuali che sommano a N.
| < ----------------------- N ------------------------- > |
--r_0 - (evento) --- r_1 -..- (evento_k) - r_ (k + 1) -
Per fare ciò, è sufficiente generare (k + 1) numeri casuali e dividere li per la loro somma, divisa per N. Il primo k di questi numeri diventa il timestamp dei tuoi eventi.
- 1. Come posso generare numeri casuali in Python?
- 2. Generazione di numeri casuali nell'intervallo con una distribuzione di probabilità
- 3. Come generare punti casuali in una distribuzione circolare
- 4. Come posso generare numeri casuali su iPhone?
- 5. XGBoost - Distribuzione di Poisson con variazione dell'esposizione/offset
- 6. Come posso generare numeri casuali in Dart?
- 7. Come generare grafici casuali?
- 8. Come generare funzioni casuali, digitate
- 9. simulatori di eventi discreti per C++
- 10. Framework di simulazione di eventi discreti per .NET
- 11. Genera numeri casuali con distribuzione probabilistica
- 12. Generatore Java per distribuzioni Poisson e uniformi?
- 13. Python: generazione di una distribuzione continua (tipo Maxwell-Boltzmann) per generare valori casuali
- 14. Come posso generare stringhe "leggibili" pseudo-casuali in Java?
- 15. Come generare numeri casuali diversi?
- 16. distribuzione dei numeri casuali
- 17. Come generare numeri con una distribuzione normale in SQL Server
- 18. C#: algoritmo numerico per generare numeri dalla distribuzione binomiale
- 19. Come generare una sequenza di numeri casuali ripetibile?
- 20. Generare devia casuali stocastici da un oggetto densità con R
- 21. Come posso generare numeri casuali senza funzione rand()?
- 22. Android - generare numeri casuali con nessuna ripetizione
- 23. Come posso generare punti casuali su una circonferenza di cerchi in javascript
- 24. Genera numeri casuali con distribuzione logaritmica e pendenza personalizzata
- 25. modo più rapido per generare bit casuali
- 26. Come generare un numero casuale dalla distribuzione discreta specificata?
- 27. Come generare dati casuali nel server SQL
- 28. Python/Numpy/Scipy: disegna i valori casuali di Poisson con lambda diverso
- 29. Come generare una data e un'ora casuali tra due date?
- 30. Come generare numeri "casuali" ma anche "univoci"?
Ciao, ho bisogno di generare numeri casuali nella frequenza di intervallo di Poisson usando java .. Ho provato a usare la tua funzione e il metodo poissonRandomInterarrivalDelay restituisce sempre zero per qualsiasi valore di lambda. – Learner
Puoi pubblicare il tuo codice come una nuova domanda? Forse posso vedere qualcosa ... –
Non riesco a farlo. Al momento sono bloccato .. – Learner