news 2026/10/7 4:05:22

Visual Studio 中随机数的生成(C#)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Visual Studio 中随机数的生成(C#)

目录

一、基本介绍

二、种子(Seed)的作用

三、基本模板

四、基本用法:生成随机数

五、代码示例

六、注意事项

七、常见方法对比


一、基本介绍

原理:基于种子值(默认以系统时间为种子)生成伪随机序列,相同种子会产生相同序列。

适用场景:游戏随机事件、抽样测试、模拟数据生成等

二、种子(Seed)的作用

默认行为
若未指定种子,Random会使用当前系统时间(毫秒级)作为种子,确保每次运行生成不同序列。

指定种子
若需生成可重复的随机序列(如测试场景),可手动传入种子:

Random randomWithSeed = new Random(123);// 种子为123,每次运行生成相同的随机数序列

三、基本模板

// 1. 实例化Random(建议全局唯一,避免重复创建)

Random random = new Random();

// 2. 生成随机数(调用不同方法)

int num1 = random.Next();// 非负整数(0 ~ int.MaxValue)

int num2 = random.Next(100);// 0 ~ 99(左闭右开区间)

int num3 = random.Next(50, 100);// 50 ~ 99

double num4 = random.NextDouble();// 0.0 ~ 1.0的双精度浮点数

四、基本用法:生成随机数

1.实例化Random对象
Random random = new Random();// 默认以系统时间作为种子(Seed)

2.生成整数
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.0

Console.WriteLine($"随机浮点数:{randomValue:F2}");// 保留两位小数

3.生成不重复的随机数

//生成10个1~100的不重复数

List<int> numbers = newList<int>(); //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类不是线程安全的,多线程环境下需加锁或使用ThreadLocal<Random>

七、常见方法对比

方法描述示例
Next()生成非负整数(0 ~ int.MaxValue)random.Next()→ 123456
Next(int maxValue)生成0 ~ maxValue-1的整数random.Next(10)→ 3
Next(int min, int max)生成min ~ max-1的整数random.Next(5, 10)→ 7
NextDouble()生成0.0 ~ 1.0的双精度浮点数random.NextDouble()→ 0.456
NextBytes(byte[] buffer)填充随机字节到数组random.NextBytes(buffer)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 2:05:36

专利撰写支持:生成符合规范的权利要求书初稿

专利撰写支持&#xff1a;生成符合规范的权利要求书初稿 在知识产权竞争日益激烈的今天&#xff0c;高质量专利的撰写效率直接关系到企业的技术壁垒构建速度。一个典型的发明专利申请中&#xff0c;权利要求书是法律保护范围的核心载体&#xff0c;其结构严谨、术语精准、逻辑严…

作者头像 李华
网站建设 2026/10/5 16:11:31

代码随想录 广度优先搜索理论基础

一、BFS的使用场景1.BFS的搜索方式适合于解决两个点之间的最短路径问题。这是因为BFS是从起点出发&#xff0c;以起始点为中心一圈一圈进行搜索&#xff0c;一旦遇到终点&#xff0c;记录之前走过的节点就是一条最短路。2.有一些问题是广搜和深搜都能够解决的&#xff0c;比如岛…

作者头像 李华
网站建设 2026/10/6 23:41:39

QQ APP技术架构分析报告

QQ APP技术架构分析报告 目录 一、核心结论二、Hippy跨端框架分析三、Shadow插件化框架四、小程序生态五、UE4游戏引擎六、PAG动画框架七、Lottie动画八、原生库技术栈九、应用架构特点十、第三方SDK集成十一、技术架构总结十二、总结 一、核心结论 QQ APP采用了混合技术架构…

作者头像 李华
网站建设 2026/10/7 3:05:25

如何快速上手Gemini:LaTeX海报制作的终极指南

如何快速上手Gemini&#xff1a;LaTeX海报制作的终极指南 【免费下载链接】gemini Gemini is a modern LaTex beamerposter theme &#x1f5bc; 项目地址: https://gitcode.com/gh_mirrors/gemin/gemini 你是否曾经为学术会议或展览制作海报而苦恼&#xff1f;传统设计…

作者头像 李华
网站建设 2026/10/6 14:23:23

汇川Easy系列PID_AT指令弹簧质量阻尼系统闭环控制仿真测试

汇川Easy系列PLC系统PID指令(温度控制PID应用编程) https://rxxw-control.blog.csdn.net/article/details/155698602?spm1011.2415.3001.5331https://rxxw-control.blog.csdn.net/article/details/155698602?spm1011.2415.3001.5331 弹簧质量阻尼系统前馈PID位置控制(PLC闭…

作者头像 李华
网站建设 2026/10/5 16:15:52

MeterSphere集群部署终极指南:从单机到高可用的性能飞跃

MeterSphere集群部署终极指南&#xff1a;从单机到高可用的性能飞跃 【免费下载链接】metersphere MeterSphere 一站式开源持续测试平台&#xff0c;为软件质量保驾护航。搞测试&#xff0c;就选 MeterSphere&#xff01; 项目地址: https://gitcode.com/gh_mirrors/me/meter…

作者头像 李华