C# 随机数生成与随机字符串创建

发布:2024-09-09 10:19 阅读:14 点赞:0

本文介绍了如何在 C# 中使用 Random 类生成随机数和随机字符串。Random 类可以生成不同类型的随机数据,包括字符串。在这个示例中,我们将学习如何创建随机数、随机字符串以及结合两者生成随机密码。

一、随机数生成

1.1 随机数生成器

Random 类提供了生成随机数的功能。它有两种构造函数形式:无参数构造函数和带种子值的构造函数。Random 类提供了以下方法:

  • Random.Next():返回一个随机整数。
  • Random.NextBytes():返回一个填充了随机字节的字节数组。
  • Random.NextDouble():返回一个介于 0.0 和 1.0 之间的随机浮点数。

Random.Next() 方法有三个重载形式,允许设置随机数的最小值和最大值。

1.2 示例代码

以下代码展示了如何生成一个随机数:

int num = random.Next(); // 生成一个随机整数

以下代码生成一个小于 1000 的随机数:

int num = random.Next(1000); // 生成一个小于 1000 的随机整数

以下代码生成一个在指定范围内的随机数:

// 实例化随机数生成器
private readonly Random _random = new Random();

// 生成指定范围内的随机数
public int RandomNumber(int min, int max)
{
  return _random.Next(min, max); // 生成在 min 和 max 范围内的随机整数
}

二、随机字符串生成

2.1 生成随机字符串

可以创建一个方法生成指定长度的随机字符串。以下代码演示如何生成一个随机字符串:

// 生成指定长度的随机字符串
public string RandomString(int size, bool lowerCase = false)
{
  var builder = new StringBuilder(size); // 创建一个 StringBuilder 实例来构建字符串

  // Unicode/ASCII 字符分为两个区块
  // (字符 65–90 / 97–122):
  // 第一个区块包含大写字母,第二个区块包含小写字母

  char offset = lowerCase ? 'a' : 'A'// 根据需要选择字母的起始字符
  const int lettersOffset = 26// A-Z 或 a-z: 长度为 26

  for (var i = 0; i < size; i++)
  {
    var @char = (char)_random.Next(offset, offset + lettersOffset); // 生成随机字符
    builder.Append(@char); // 将字符追加到 StringBuilder 实例中
  }

  return lowerCase ? builder.ToString().ToLower() : builder.ToString(); // 根据需要返回小写或大写字符串
}

2.2 示例代码

以下代码生成一个长度为 10 的随机字符串:

var randomString = generator.RandomString(10); // 生成一个长度为 10 的随机字符串

三、生成随机密码

3.1 随机密码生成

以下代码生成一个随机密码,密码由 4 个小写字母、4 个数字和 2 个大写字母组成:

// 生成随机密码
public string RandomPassword()
{
  var passwordBuilder = new StringBuilder(); // 创建一个 StringBuilder 实例来构建密码

  // 4 个小写字母
  passwordBuilder.Append(RandomString(4true)); // 生成 4 个小写字母

  // 4 个介于 1000 和 9999 之间的数字
  passwordBuilder.Append(RandomNumber(10009999)); // 生成 4 个数字

  // 2 个大写字母
  passwordBuilder.Append(RandomString(2)); // 生成 2 个大写字母
  return passwordBuilder.ToString(); // 返回生成的密码
}

3.2 示例代码

以下代码演示如何生成一个随机密码并打印出来:

var randomPassword = generator.RandomPassword(); // 生成随机密码
Console.WriteLine($"Random password is {randomPassword}"); // 打印随机密码

四、总结

本文介绍了如何在 C# 中使用 Random 类生成随机数和随机字符串,并展示了如何结合这些方法生成随机密码。通过示例代码,你可以在实际开发中应用这些技术来满足不同的需求。