asp.net random number generator
c-sharp :: the central randomizer
here is my asp.net randomizer class based on the c R250/512 shift-register sequence random number generator, by kirkpatrick and stoll and published (j. computational physics, vol 40, pp. 517-526) with an added a pseudo-random class redefinition and buffer overflow protection.
public sealed class randomizer { private int good_index; private int evil_index; private int[] good_buffer = new int[250]; private int[] evil_buffer = new int[521]; public randomizer() { Random r = new Random(); int i = 521; int seed = 1; int salt = 999999999; while (i-- > 250) { evil_buffer[i] = r.Next(); } while (i-- > 31) { good_buffer[i] = r.Next(); evil_buffer[i] = r.Next(); } while (i-- > 0) { good_buffer[i] = (r.Next() | seed) & salt; evil_buffer[i] = (r.Next() | seed) & salt; salt ^= seed; seed >>= 1; } good_buffer[0] = seed; evil_buffer[0] = salt; good_index = 0; evil_index = 0; } public int random() { int g = good_index; int e = evil_index; int nina = g - (250-103); if (nina < 0) nina = g + 103; int xero = e - (521-168); if (xero < 0) xero = e + 168; int x = good_buffer[nina] ^ good_buffer[g]; good_buffer[g] = x; int z = evil_buffer[xero] ^ evil_buffer[e]; evil_buffer[e] = z; g = (g != 249) ? (g + 1) : 0; good_index = g; e = (e != 521) ? (e + 1) : 0; evil_index = e; return x ^ z; } }
example usage
randomizer x = new randomizer(); int num = x.random();