如何生成一个随机值,并在字母表显示它

本文关键字:字母表 显示 随机 何生成 一个 | 更新日期: 2023-09-27 18:06:18

我有一个方法可以显示指定长度的1到26之间的随机数。

 public string RandomDigits(int length)
    {
        var random = new Random();
        string s = string.Empty;
        for (int i = 0; i < length; i++)
            s = String.Concat(s, random.Next(1,27).ToString()+" ");
        return s;
    }

如何以字母形式显示返回值。即该方法返回

1 10 7 2 11

我想要得到A J G B K

如何生成一个随机值,并在字母表显示它

这里是使用char代替已定义字符串的解决方案的一个变体。这将使用一个字符数组,然后在末尾将其转换为字符串。比连接字符串更有效。

public string RandomDigits(int length)
{
    var random = new Random();
    var chars = new char[length];
    for (int i = 0; i < length; i++)
        chars[i] = (char) random.Next('A', ('Z' + 1));
    return string.Join(" ", chars);
}
public string RandomDigits(int length)
{
    // Define your char set
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var random = new Random();
    string s = string.Empty;
    for (int i = 0; i < length; i++)
        s = String.Concat(s, chars[random.Next(0,26)] +" ");
    return s;
}

是的,我已经为您创建了一个dotnetfiddle来显示输出

using System;
public class Program
{
    public static void Main()
    {
        var s = RandomDigits(5);
        Console.WriteLine(s);
    }
    public static string RandomDigits(int length)
    {
        char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
        var random = new Random();
        string s = string.Empty;
        for (int i = 0; i < length; i++)
            s = String.Concat(s, alphabet[random.Next(0,26)] +" ");
        return s;
    }
}

希望这对你有帮助!

不需要字符数组,使用字符和0到25之间的数字:

((char)('A'+$randomNumber)).ToString()

使用StringBuilder来减少内存分配,只需在[0,26)之间生成一个随机数并将其添加到' a ':

public string RandomDigits(int length)
{
    var random = new Random();
    var builder = new StringBuilder(length);
    for(int i = 0; i < length; i++)
    {
        var offset = random.Next(0, 26);
        char c= (char)('A' + offset);
        builder.Append(c);
    }    
    return builder.ToString();
}

如果你想做一些更像linq的事情,那么试试这个:

public IEnumerable<char> YieldRandomDigits(int length)
{
    var random = new Random();
    var selector = Enumerable.Range(1,length).Select(i => (char)('A' + random.Next(0, 26)));
    return selector;
}

你现在可以说:

var s = string.Join("", YieldRandomDigits(10));

最节省计算时间的方法之一是声明一个数组alphabets而不是直接使用随机int,而是使用它作为这个字母表数组

的索引
using System;
public class Program
{
    static public string RandomDigits(int length)
        {
            var random = new Random();
            string s = string.Empty;
            char[] alphabets = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
            for (int i = 0; i < length; i++)
                s = String.Concat(s, alphabets[random.Next(0,26)].ToString()+" ");
            Console.WriteLine(s);
            return s;
        }   
    public static void Main()
    {
        Console.WriteLine("Hello World");
        Console.WriteLine(RandomDigits(7));
    }

}

请看这里https://dotnetfiddle.net/AsHX32

谢谢大家。这就是我需要做的

private String Number2String(int number, bool isCaps)
    {
       Char c = (Char)((isCaps ? 65 : 97) + (number - 1));
        return c.ToString();
    }

这是一个将数字转换为字符串的方法然后将长度为6的随机数或任意指定长度的随机数加到列表中

      List<int> list = new List<int>();
        var random = new Random();
        string s = string.Empty;
        for (int i = 0; i < 6; i++)
        {
            list.Add(random.Next(1, 27));
        }
        foreach (int li in list)
        {
            s = String.Concat(s, Number2String(li, true) + " ");
           //string use =  Number2String(li, true);
        }
        MessageBox.Show(s);

循环遍历列表并将其转换为字母表。这就是我所需要达到的。我想我的问题没有提好。这可能是得到的字母表相当于一个生成的随机数。没有得到随机的字母数字