【问题标题】:I need a better way to code this Random Letter generator我需要一种更好的方法来编码这个随机字母生成器
【发布时间】:2015-01-20 12:01:21
【问题描述】:

通过反复试验,我结束了这一点,请帮助我。一个随机生成器,它为一个文本框生成 5 个随机字母,并且所有字母都必须有自己的随机机会。我正在寻找一种更简洁的方式来编写这个随机字母生成器。也许是使用 Random() 的不同方式。

       private void GenerateLetter_Click(object sender, EventArgs e)
    {       Random rnd = new Random(); 
            String[] rArray = { "A", "B", "C", "D", "E", "F", "G" };            
            int x1 = rnd.Next(0,7);
            int x2 = rnd.Next(0, 7);
            int x3 = rnd.Next(0, 7);
            int x5 = rnd.Next(0, 7);
            int x6 = rnd.Next(0, 7);
            int x7 = rnd.Next(0, 7);
            int x8 = rnd.Next(0, 7);
            int x9 = rnd.Next(0, 7);
            int x10 = rnd.Next(0, 7);
            int x11 = rnd.Next(0, 7);
            int x12 = rnd.Next(0, 7);
            int x13 = rnd.Next(0, 7);
            int x14 = rnd.Next(0, 7);
            int x15 = rnd.Next(0, 7);
            int x16 = rnd.Next(0, 7);
            int x17 = rnd.Next(0, 7);
            int x18 = rnd.Next(0, 7);
            int x19 = rnd.Next(0, 7);
            int x20 = rnd.Next(0, 7);

            textBox1.Text =  rArray[x1] + rArray[x2] + rArray[x3] + rArray[x4] + rArray[x5];
            textBox2.Text =  rArray[x6] + rArray[x7] + rArray[x8] + rArray[x9] + rArray[x10];
            textBox3.Text =  rArray[x11] + rArray[x12] + rArray[x13] + rArray[x14] + rArray[x15];
            textBox4.Text =  rArray[x16] + rArray[x17] + rArray[x18] + rArray[x19] + rArray[x20];            
    } 

【问题讨论】:

标签: c# random


【解决方案1】:
static readonly Random Rand = new Random();
private const string Alpha = "ABCDEFG";

 public static string GenerateAlphaString(int size)
        {
            var chars = new char[size];
            for (int i = 0; i < size; i++)
            {
                chars[i] = Alpha[Rand.Next(Alpha.Length)];
            }
            return new string(chars);
        }

然后调用那个方法:

textBox1.Text = GenerateAlphaString(5);

【讨论】:

    【解决方案2】:

    此代码将与您提供的代码完全相同:

    private static Random rand = new Random();
    private static string alphabet = "ABCDEFG";
    private static string GetRandomString(int length)
    {
        var stringBuilder = new StringBuilder();
        for (int i = 0; i < length; i++)
        {
            stringBuilder.Append(alphabet[rand.Next(0, alphabet.length)]);
        }
        return stringBuilder.ToString();
    }
    
    private void GenerateLetter_Click(object sender, EventArgs e)
    {
        textBox1.Text = GetRandomString(5);
        textBox2.Text = GetRandomString(5);
        textBox3.Text = GetRandomString(5);
        textBox4.Text = GetRandomString(5);         
    }
    

    【讨论】:

      【解决方案3】:

      给你一个随机字母的静态方法:

      using System;
      
      static class RandomLetter
      {
          static Random _random = new Random();
          public static char GetLetter()
          {
          int num = _random.Next(0, 26); // Zero to 25
          char let = (char)('a' + num);
          return let;
          }
      }
      

      用途:

      Console.WriteLine(RandomLetter.GetLetter());
      

      【讨论】:

        猜你喜欢
        • 2014-01-20
        • 2017-07-28
        • 2013-05-13
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-26
        相关资源
        最近更新 更多