做网页兼职的网站,客户管理系统哪个好用,WordPress多城市,广州网站建设哪个好1. 使用 Random 类#xff08;简单场景#xff09;
2. 使用 RandomNumberGenerator 类#xff08;安全场景#xff09;
3. 生成指定精度的随机小数 C# 中生成随机数的常用方法#xff1a;
随机数类型实现方式示例代码特点与适用场景随机整数#xff08;无范围#xf…1. 使用 Random 类简单场景
2. 使用 RandomNumberGenerator 类安全场景
3. 生成指定精度的随机小数 C# 中生成随机数的常用方法
随机数类型实现方式示例代码特点与适用场景随机整数无范围Random 类Random rnd new Random(); int num rnd.Next();生成 0 到 int.MaxValue 之间的整数适用于简单随机场景随机整数指定上限Random 类int num rnd.Next(100); // 0-99不包含 100生成 0 到指定最大值之间的整数适合需要控制上限的场景随机整数指定范围Random 类int num rnd.Next(5, 15); // 5-14包含 5不包含 15生成指定区间内的整数适用范围明确的场景随机双精度浮点数Random 类double num rnd.NextDouble(); // 0.0-1.0不包含 1.0生成 0 到 1 之间的小数可通过计算扩展到任意范围安全随机整数RandomNumberGenerator 类int num RandomNumberGenerator.GetInt(100); // 0-99加密级随机数生成适合安全敏感场景如密码重置令牌需引用 System.Security.Cryptography安全随机字节数组RandomNumberGenerator 类byte[] data new byte[16]; RandomNumberGenerator.Fill(data);生成指定长度的随机字节数组用于加密、密钥生成等安全场景指定范围的随机小数结合 Random 与计算double num rnd.NextDouble() * (20 - 5) 5; // 5.0-20.0生成任意区间的随机小数通过线性变换实现固定精度随机小数结合 Random 与四舍五入double num Math.Round(rnd.NextDouble() * 100, 2); // 保留 2 位小数生成指定精度的随机小数适合需要控制小数位数的场景如金额
关键说明
Random类适合普通场景创建成本低但随机性较弱避免短时间内创建多个实例可能生成相同序列RandomNumberGenerator类提供加密级随机性适合安全相关场景但性能开销略高多线程环境中Random需要同步处理RandomNumberGenerator则线程安全如需可重复的随机序列如测试可使用new Random(固定种子)构造Random实例 1. 使用 Random 类简单场景
// 创建Random实例建议程序中只创建一个实例
Random random new Random();// 生成0到int.MaxValue之间的随机整数
int randomInt random.Next();// 生成0到指定最大值不包含之间的随机整数
int randomIntWithMax random.Next(100); // 0-99之间// 生成指定范围内包含最小值不包含最大值的随机整数
int randomIntInRange random.Next(10, 20); // 10-19之间// 生成0.0到1.0之间的随机双精度浮点数
double randomDouble random.NextDouble();// 生成指定范围内的随机双精度浮点数
double randomDoubleInRange random.NextDouble() * (max - min) min;2. 使用 RandomNumberGenerator 类安全场景
适合加密、安全相关场景需要引用 System.Security.Cryptography 命名空间
using System.Security.Cryptography;// 生成0到指定最大值不包含之间的随机整数
int secureInt RandomNumberGenerator.GetInt(100); // 0-99之间// 生成指定范围内的随机整数
int secureIntInRange RandomNumberGenerator.GetInt(10, 20); // 10-19之间// 生成随机字节数组
byte[] randomBytes new byte[10];
RandomNumberGenerator.Fill(randomBytes);3. 生成指定精度的随机小数
// 生成保留2位小数的随机数0-100之间
Random random new Random();
double value random.NextDouble() * 100;
double roundedValue Math.Round(value, 2); // 保留2位小数注意事项
Random 类的默认构造函数使用系统时钟作为种子短时间内创建多个实例可能生成相同序列多线程环境下使用 Random 需要加锁或使用 RandomNumberGenerator安全敏感场景必须使用 RandomNumberGenerator如需重复生成相同序列可使用带固定种子的 Random 构造函数new Random(seed)