C# 中的 Random
类是一个用于生成伪随机数的类。它位于 System
命名空间中,因此在使用之前需要引入该命名空间。Random
类提供了多种方法来生成不同类型的随机数,比如整数、浮点数等。
引入命名空间
首先,确保代码文件顶部引入了 System
命名空间:
using System;
创建 Random 实例
要生成随机数,需要先创建一个 Random
类的实例。如果你没有为 Random
的构造函数提供种子(seed),则它会自动使用系统时钟作为种子,这意味着每次程序运行时,生成的随机数序列可能会不同(但如果快速连续地创建 Random
实例并生成随机数,可能会因为种子相同而得到相同的随机数序列)。
Random random = new Random();
生成随机数
生成随机整数
- 指定范围内的随机整数:使用
Next(int minValue, int maxValue)
方法可以生成一个在指定范围内的随机整数(包括minValue
,但不包括maxValue
)。
int randomNumber = random.Next(1, 101); // 生成1到100之间的随机整数
Console.WriteLine(randomNumber);
- 生成非负随机整数:如果只调用
Next()
或Next(int maxValue)
,则会生成一个非负随机整数。
int nonNegativeRandomNumber = random.Next(); // 生成非负随机整数
int anotherRandomNumber = random.Next(100); // 生成0到99之间的随机整数
Console.WriteLine(nonNegativeRandomNumber);
Console.WriteLine(anotherRandomNumber);
生成随机浮点数
- 生成随机浮点数:使用
NextDouble()
方法可以生成一个大于等于0.0且小于1.0的双精度浮点数。可以通过缩放和平移这个结果来生成指定范围内的随机浮点数。
double randomDouble = random.NextDouble() * 100; // 生成0到100之间的随机浮点数
Console.WriteLine(randomDouble);// 生成特定范围内的随机浮点数
double rangeRandomDouble = random.NextDouble() * (maxValue - minValue) + minValue;
Console.WriteLine(rangeRandomDouble); // 假设maxValue和minValue是之前定义的变量
注意事项
- 如果在循环中频繁地创建
Random
实例,可能会导致生成相同的随机数序列,因为多次快速调用可能会得到相同的系统时钟值作为种子。为了避免这种情况,最好将Random
实例的创建移到循环外部。 - 对于需要高安全性随机数的应用场景(如加密),应使用
System.Security.Cryptography
命名空间下的类(如RNGCryptoServiceProvider
或RandomNumberGenerator
),因为它们提供了更强的随机数生成算法。
Random频率太快,产生的随机数相同