在 C# 中生成随机数和随机字符串

作者 : 慕源网 本文共3452个字,预计阅读时间需要9分钟 发布时间: 2022-03-12 共148人阅读

C# Random 类提供了在 C# 中生成随机数的功能。Random 类还可以生成其他数据类型,包括字符串。在此代码示例中,了解如何在 C# 中创建随机数。

随机类构造函数有两种重载形式。它要么不取值,要么取种子值。Random 类提供Random.Next()、Random.NextBytes()和Random.NextDouble()方法。Random.Next()方法返回一个随机数,Random.NextBytes()返回一个填充了随机数的字节数组,Random.NextDouble ()返回一个介于 0.0 和 1.0 之间的随机数。

Random.Next()方法具有三种重载形式,允许您设置随机数的最小和最大范围。

以下代码返回一个随机数。
int  num = random.Next(); 
以下代码返回一个小于 1000 的随机数。
int  num = random.Next(1000);  
以下代码返回最小和最大范围之间的随机数。
// Instantiate random number generator.  
private readonly Random _random = new Random();  
  
// Generates a random number within a range.      
public int RandomNumber(int min, int max)  
{  
  return _random.Next(min, max);  
}  
您甚至可以结合使用 RandomNumber 和 RandomString 这两种方法来生成随机字符串和数字的组合。
// Generates a random string with a given size.    
public string RandomString(int size, bool lowerCase = false)  
{  
  var builder = new StringBuilder(size);  
  
  // Unicode/ASCII Letters are divided into two blocks
  // (Letters 65–90 / 97–122):
  // The first group containing the uppercase letters and
  // the second group containing the lowercase.  

  // char is a single Unicode character  
  char offset = lowerCase ? 'a' : 'A';  
  const int lettersOffset = 26; // A...Z or a..z: length=26  
  
  for (var i = 0; i < size; i++)  
  {  
   var @char = (char)_random.Next(offset, offset + lettersOffset);  
   builder.Append(@char);  
  }  
  
  return lowerCase ? builder.ToString().ToLower() : builder.ToString();  
}  
以下代码生成长度为 10 的密码,前 4 个字母小写,后 4 个字母数字,后 2 个大写字母。
// Generates a random password.  
// 4-LowerCase + 4-Digits + 2-UpperCase  
public string RandomPassword()  
{  
  var passwordBuilder = new StringBuilder();  
  
  // 4-Letters lower case   
  passwordBuilder.Append(RandomString(4, true));  
  
  // 4-Digits between 1000 and 9999  
  passwordBuilder.Append(RandomNumber(1000, 9999));  
  
  // 2-Letters upper case  
  passwordBuilder.Append(RandomString(2));  
  return passwordBuilder.ToString();  
}  
这是用 .NET Core 5.0 编写的完整代码。
using System;  
using System.Text;  
  
namespace ConsoleApp7  
{  
  class RandomNumberSample  
  {  
    static void Main(string[] args)  
    {  
      var generator = new RandomGenerator();  
      var randomNumber = generator.RandomNumber(5, 100);  
      Console.WriteLine($"Random number between 5 and 100 is {randomNumber}");  
  
      var randomString = generator.RandomString(10);  
      Console.WriteLine($"Random string of 10 chars is {randomString}");  
  
      var randomPassword = generator.RandomPassword();  
      Console.WriteLine($"Random string of 6 chars is {randomPassword}");  
  
      Console.ReadKey();  
    }  
  }  
  
  public class RandomGenerator  
  {  
    // Instantiate random number generator.  
    // It is better to keep a single Random instance 
    // and keep using Next on the same instance.  
    private readonly Random _random = new Random();  
  
    // Generates a random number within a range.      
    public int RandomNumber(int min, int max)  
    {  
      return _random.Next(min, max);  
    }  
  
    // Generates a random string with a given size.    
    public string RandomString(int size, bool lowerCase = false)  
    {  
      var builder = new StringBuilder(size);  
  
      // Unicode/ASCII Letters are divided into two blocks
      // (Letters 65–90 / 97–122):   
      // The first group containing the uppercase letters and
      // the second group containing the lowercase.  

      // char is a single Unicode character  
      char offset = lowerCase ? 'a' : 'A';  
      const int lettersOffset = 26; // A...Z or a..z: length = 26  
  
      for (var i = 0; i < size; i++)  
      {  
        var @char = (char)_random.Next(offset, offset + lettersOffset);  
        builder.Append(@char);  
      }  
  
      return lowerCase ? builder.ToString().ToLower() : builder.ToString();  
    }  
  
    // Generates a random password.  
    // 4-LowerCase + 4-Digits + 2-UpperCase  
    public string RandomPassword()  
    {  
      var passwordBuilder = new StringBuilder();  
  
      // 4-Letters lower case   
      passwordBuilder.Append(RandomString(4, true));  
  
      // 4-Digits between 1000 and 9999  
      passwordBuilder.Append(RandomNumber(1000, 9999));  
  
      // 2-Letters upper case  
      passwordBuilder.Append(RandomString(2));  
      return passwordBuilder.ToString();  
    }  
  }  
}  

上述代码的输出如图-1-所示。

在 C# 中生成随机数和随机字符串

图 -1- 控制台输出

强烈推荐

海量程序代码,编程资源,无论你是小白还是大神研究借鉴别人优秀的源码产品学习成熟的专业技术强势助力帮你提高技能与技能。在此处获取,给你一个全面升级的机会。只有你更值钱,才能更赚钱

海量源码程序,学习别人的产品设计思维与技术实践


慕源网 » 在 C# 中生成随机数和随机字符串

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录