Ho questo generatore di numeri casuali, e l'ho avuto per un po 'di tempo, ma nonostante quanto lo uso non lo capisco davvero.
public static int Random(int x)
{
x = x + seed;
x = (x << 13) ^ x;
return (x * (x * x * 15731 + 789221) + 1376312589) & 0x7fffffff;
}
Funziona molto bene per i miei scopi: prende un numero intero e sputa un altro intero casuale. Non si basa su uno stato, né fa affidamento sul suo ultimo output come tanti generatori lineari congruenti.
Che tipo di generatore è questo? Vorrei alcuni termini che posso comprendere su Google e saperne di più. A quale famiglia di PRNG appartiene? Come / perché funziona?