Carissimi tutti,
quanto sto per dire credo che sia già stato un quesito sollevato ma purtroppo non ho trovato le risposte al mio dubbio per cui perdonatemi se inserisco il post con nuovi quesiti.
Nella generazione di numeri casuali (intervalli inclusi e non) trovo i seguenti stralci di codice:
[X,Y] (intervalli inclusi)
double casuale= X + (X-Y)*lrand48()/RAND_MAX
[X,Y) (aperto a dx)
double casuale=X + (lrand48()/(RAND_MAX+1.))*(X-Y)
(X,Y] (aperto a sx)
double casuale=X + ((lrand48()+1.)/(RAND_MAX+1.))*(X-Y)
(X,Y) (aperto a sx e dx)
double casuale=X + ((lrand48()+1.)/(RAND_MAX+2.))*(X-Y)
Fatto salvo l'inizializzazione del seme, mi chiedo il motivo dei "+1. e 2." e perchè questa "versione" è preferibile a quella che sfrutta il resto della divisione.
Ho trovato svariate spiegazioni,frammentarie ma nulla di organico e chiaro.
Soprattutto mi è ignoto lo shift utilizzato al denominatore nella versione in cui si escludono entrambi gli estremi.
Certo del vostro prezioso aiuto vi ringrazio in anticipo
Alessandro