public static int GetRandom(int pMinVal = 0, int pMaxVal = int.MaxValue) { int m = pMaxVal - pMinVal; int rnd = int.MinValue; decimal _base = (decimal)long.MaxValue; byte[] rndSeries = new byte[8]; RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); rng.GetBytes(rndSeries); long l = BitConverter.ToInt64(rndSeries, 0); rnd = (int)(Math.Abs(l) / _base * m); return pMinVal + rnd; }