2026/1/22 1:25:04
网站建设
项目流程
在线课程网站建设规范,网络公司网站图片,网站改版的影响,百度云盘做网站空间目录
一、基本介绍
二、种子#xff08;Seed#xff09;的作用
三、基本模板
四、基本用法#xff1a;生成随机数
五、代码示例
六、注意事项
七、常见方法对比 一、基本介绍
原理#xff1a;基于种子值#xff08;默认以系统时间为种子#xff09;生成伪随机序列…目录一、基本介绍二、种子Seed的作用三、基本模板四、基本用法生成随机数五、代码示例六、注意事项七、常见方法对比一、基本介绍原理基于种子值默认以系统时间为种子生成伪随机序列相同种子会产生相同序列。适用场景游戏随机事件、抽样测试、模拟数据生成等二、种子Seed的作用默认行为若未指定种子Random会使用当前系统时间毫秒级作为种子确保每次运行生成不同序列。指定种子若需生成可重复的随机序列如测试场景可手动传入种子Random randomWithSeed new Random(123);// 种子为123每次运行生成相同的随机数序列三、基本模板// 1. 实例化Random建议全局唯一避免重复创建Random random new Random();// 2. 生成随机数调用不同方法int num1 random.Next();// 非负整数0 ~ int.MaxValueint num2 random.Next(100);// 0 ~ 99左闭右开区间int num3 random.Next(50, 100);// 50 ~ 99double num4 random.NextDouble();// 0.0 ~ 1.0的双精度浮点数四、基本用法生成随机数1.实例化Random对象Random random new Random();// 默认以系统时间作为种子Seed2.生成整数int randomInt random.Next(10);// 结果0-9之间的整数3.生成浮点数double randomDouble random.NextDouble();// 结果0.0 ≤ x 1.0五、代码示例1.生成指定范围的整数Random rnd new Random();int diceRoll rnd.Next(1, 7);// 生成1~6的整数模拟骰子Console.WriteLine($骰子点数{diceRoll});2.生成随机浮点数Random rnd new Random();double randomValue rnd.NextDouble() * 100;// 0.0 ~ 100.0Console.WriteLine($随机浮点数{randomValue:F2});// 保留两位小数3.生成不重复的随机数//生成10个1~100的不重复数Listint numbers newListint(); //List可以指定类型进行存储且存储一种数据类型取出时不用强制转换能保证数据类型安全while (numbers.Count 10){int num rnd.Next(1, 101);if (!numbers.Contains(num))numbers.Add(num);}Console.WriteLine(不重复随机数 string.Join(, , numbers));六、注意事项1.避免短时间内重复实例化若在循环中频繁创建Random对象如毫秒内多次实例化系统时间种子可能相同导致生成重复的随机数。建议全局或类级别的单例实例。2.种子的可控性若需复现随机结果可指定种子Random random new Random(123); // 固定种子123每次运行生成相同序列3.加密安全场景若用于密码等敏感场景需使用加密级随机数生成器4.多线程安全Random类不是线程安全的多线程环境下需加锁或使用ThreadLocalRandom七、常见方法对比方法描述示例Next()生成非负整数0 ~ int.MaxValuerandom.Next()→ 123456Next(int maxValue)生成0 ~ maxValue-1的整数random.Next(10)→ 3Next(int min, int max)生成min ~ max-1的整数random.Next(5, 10)→ 7NextDouble()生成0.0 ~ 1.0的双精度浮点数random.NextDouble()→ 0.456NextBytes(byte[] buffer)填充随机字节到数组random.NextBytes(buffer)