我有一个方法可以显示指定长度的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答案 0 :(得分:1)
以下是使用char而不是已定义字符串的解决方案的变体。这使用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);
}
答案 1 :(得分:0)
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;
}
答案 2 :(得分:0)
是的,我已经创建了一个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;
}
}
希望这有帮助!
答案 3 :(得分:0)
不需要char数组,使用char和0到25之间的数字:
((char)('A'+$randomNumber)).ToString()
答案 4 :(得分:0)
使用StringBuilder
减少内存分配,只需在[0,26]之间生成一个随机数,然后将其添加到&#39; A&#39;:
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-ish然后试试这个:
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));
答案 5 :(得分:0)
执行此操作的最小计算时间方法之一是声明一个数组字母,而不是直接使用random 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));
}
}
答案 6 :(得分:0)
谢谢大家。 这实际上就是我需要做的事情
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);
遍历列表并将其转换为字母表。 这就是我需要实现的目标。我猜我的问题构建得不好。 这本来可以得到相当于生成的随机数的字母表。 没有得到随机字母数字。