繁体   English   中英

给每个变量分配随机字母

[英]Assign random letter to each variable

如何遍历变量并为每个变量分配一个随机字母?

无需做:

var1 = RandomLetter();
var2 = RandomLetter();
var3 = RandomLetter();
var4 = RandomLetter();
var5 = RandomLetter();

这将产生所有具有相同字母的字母:

var1 = var2 = var3 = RandomLetter();

我正在寻找一种缩短流程的方法,我需要对50多个变量进行处理。

起初,我虽然是一个foreach循环,但它们为null,并且不会从要循环的集合开始。

// Variables
public static char var1, var2, var3, var4, var5;


// Generate Random Letter
public static Random random = new Random();
public static char RandomLetter()
{
    const string text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int index = random.Next(text.Length);
    return text[index];
}

不要使用单独的变量,而应使用集合:

List<char> letters = 
    Enumerable.Range(1,50)
              .Select(i => RandomLetter())
              .ToList();

您可以创建一个(不相关的)数字数组,然后将每个(不相关的)数字转换为随机字符。

var randomLetterList = Enumerable.Range(0, 50)
                            .Select(x => RandomLetter())
                            .ToArray();

Enumerable.Range(0, 50)

这将返回从0开始的50个数字的列表: [ 0 , 1 , 2 , ... , 49 ]

.Select(x => RandomLetter())

这会将列表中的每个元素变成一个随机字母(注意,永远不会使用数字的实际 ):例如[ 'b' , 'h' , 'm' , ... , 'o' ]

这里要注意的重要一点是,结果列表将包含一样多的字母,如初始列表有编号。

.ToArray();

这只是将IEnumerable<char>转换为char[] 这使您可以通过使用字母索引来访问字母。

而不是使用

  • var1
  • var2
  • var3
  • ...
  • var50

您改为使用:

  • randomLetterList[0]
  • randomLetterList[1]
  • randomLetterList[2]
  • ...
  • randomLetterList[49]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM