如何循环变量并为每个变量分配一个随机字母?
无需做:
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];
}
答案 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]