Ho bisogno di generare un flusso infinito di numeri interi casuali, con numeri compresi nell'intervallo [1..n]. Tuttavia la probabilità per ogni numero p_i è data in anticipo, quindi la distribuzione non è uniforme.Generazione di numeri interi casuali con probabilità date
Esiste una funzione di libreria per farlo in Haskell?
Ho appena provato questo "Tempo totale 55.59s" contro l'attuazione qui: http://idontgetoutmuch.wordpress.com/2014/08/26/haskell-vectors-and-sampling-from-a-categorical -distribuzione/campionamento "Tempo totale 11.09s" 2 * 10^7 campioni in entrambi i casi. Forse questo non è un paragone equo in quanto si usa System.Random e l'altro System.Random.MWC. – idontgetoutmuch
Sì, suppongo che la generazione di numeri casuali possa dominare nel mio codice. Ha anche bisogno di specializzazione, che potrebbe avvenire automaticamente con -O2. – augustss
Utilizzando un generatore di numeri casuali diverso, ottengo "Tempo totale 20,31" migliore ma non altrettanto buono. Non ho ancora provato la specializzazione. Anche l'utilizzo della memoria non è buono. Mi aspetterei 4 + 8 byte per ogni voce nelle due tabelle in modo che dovrebbe essere 2 * 12 * 10^7 byte quindi meno di 1G. Sto vedendo circa 5G. Probabilmente sono comunque ingenuo. E non ho ancora finito di leggere Devroye e Vose. Chi avrebbe pensato che potresti divertirti così tanto con numeri casuali. – idontgetoutmuch