var randomBytes = new byte[4]; using (var rng = RandomNumberGenerator.Create()) { rng.GetBytes(randomBytes); var trueRandom = BitConverter.ToUInt32(randomBytes, 0); chance = trueRandom / (double)uint.MaxValue; }