Random随机数种子生成,减少生成重复随机数的可能
我们都知道使用Random可以生成随机数,默认的无参的构造函数New Random()。使用与时间相关的默认种子值,初始化 System.Random 类的新实例。
这种方式生成随机数时重复的概率很大。可以传入一个种子,用来计算伪随机数序列起始值的数字。
/// <summary> /// 创建加密随机数生成器 生成强随机种子 /// </summary> /// <returns></returns> private static int GetRandomSeed() { byte[] bytes = new byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); rng.GetBytes(bytes); return BitConverter.ToInt32(bytes, 0); }
private static int GenerateRandom() { int seed = GetRandomSeed(); return new Random(seed) .Next(Int32.MaxValue); }
RNGCryptoServiceProvider 类
使用加密服务提供程序 (CSP) 提供的实现来实现加密随机数生成器 (RNG)。