Diciamo che abbiamo una distribuzione discreta con un numero finito di risultati possibili, è possibile generare un numero casuale da questa distribuzione più veloce rispetto a O (logn), dove n è il numero di risultati possibili?Come generare un numero casuale dalla distribuzione discreta specificata?
Come rendere in O (log n):
- Fare un array con probabilità cumulativa (Array [i] = Probabilità che di numeri casuali sarà minore o uguale a i)
- Genera numeri casuali da distribuzione uniforme (diciamolo con k)
- Trova il più piccolo i tale che k < Array [i]. Può essere fatto usando la ricerca binaria.
- i è il nostro numero casuale.
@Tomek, per favore ricordati di assegnare la taglia. – Kos
@Kos: Grazie, non sapevo di dover assegnare la taglia, ho pensato che fosse una cosa automatica. –
La metà della ricompensa viene assegnata automaticamente alla migliore risposta se si trascura assegnarlo in tempo, AFAICR. – Kos