为每个变量分配随机字母

时间:2017-12-07 15:38:25

标签: c#

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

无需做:

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];
}

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

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

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

这将返回一个包含50个数字的列表,从0开始:[ 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]