[1] Può essere interessante sbirciare in STDLIB.H le definizioni di randomize() e random(), descritta oltre.

[2] In una variabile di tipo long vi sono sizeof(long)*CHAR_BIT bit, dai quali va escluso quello utilizzato per la gestione del segno, mentre la dimensione (in bit) di RAND_MAX è pari a sizeof(RAND_MAX)*CHAR_BIT, meno il bit più significativo (al solito, il sign bit).

[3] Si osservi che, nei dividendi, CHAR_BIT è raccolto a fattore comune e i numeri 1 rappresentanti i sign bit si elidono: ciò contribuisce a rendere meno esplicito il significato della formula.

[4] Si sottrae 1 a sizeof(MAX_RAND)*CHAR_BIT nell'assunzione che il valore espresso da MAX_RAND sia da intendersi "segnato" e perciò non utilizzi il bit più significativo.

[5] "Grossolanamente" significa che, a causa dell'arrotondamento per eccesso applicato al calcolo del fattore di proporzionalità, il numero casuale ottenuto potrebbe essere superiore al limite indicato.

[6] Ne segue che, da un punto di vista formale, il metodo per conoscerlo consiste nel risolvere il seguente sistema di due equazioni a due incognite:

upperlim = LONG_MAX - 2 * factor - 2
factor = upperlim / RAND_MAX

che, risolto, fornisce per upperlim un valore (arrotondato per difetto) di 2147352578 (assumendo che i dati di tipo long siano gestiti con 32 bit).

[7] Una versione portabile di randoml() dovrebbe utilizzare moltiplicazioni (per 2 o per potenze di 2) in luogo degli shift. Il carico elaborativo (tanto delle moltiplicazioni quanto del calcolo delle potenze, da effettuare dinamicamente) risulterebbe estremamente penalizzante.

[8] Quindi senza considerare l'overhead introdotto dagli shift in randoml() e dal calcolo di factor in randomx().

[9] La stessa verifica ha inoltre chiaramente evidenziato che il tempo di elaborazione di randoml() `, effettivamente, costante.