【发布时间】:2015-01-20 12:01:21
【问题描述】:
通过反复试验,我结束了这一点,请帮助我。一个随机生成器,它为一个文本框生成 5 个随机字母,并且所有字母都必须有自己的随机机会。我正在寻找一种更简洁的方式来编写这个随机字母生成器。也许是使用 Random() 的不同方式。
private void GenerateLetter_Click(object sender, EventArgs e)
{ Random rnd = new Random();
String[] rArray = { "A", "B", "C", "D", "E", "F", "G" };
int x1 = rnd.Next(0,7);
int x2 = rnd.Next(0, 7);
int x3 = rnd.Next(0, 7);
int x5 = rnd.Next(0, 7);
int x6 = rnd.Next(0, 7);
int x7 = rnd.Next(0, 7);
int x8 = rnd.Next(0, 7);
int x9 = rnd.Next(0, 7);
int x10 = rnd.Next(0, 7);
int x11 = rnd.Next(0, 7);
int x12 = rnd.Next(0, 7);
int x13 = rnd.Next(0, 7);
int x14 = rnd.Next(0, 7);
int x15 = rnd.Next(0, 7);
int x16 = rnd.Next(0, 7);
int x17 = rnd.Next(0, 7);
int x18 = rnd.Next(0, 7);
int x19 = rnd.Next(0, 7);
int x20 = rnd.Next(0, 7);
textBox1.Text = rArray[x1] + rArray[x2] + rArray[x3] + rArray[x4] + rArray[x5];
textBox2.Text = rArray[x6] + rArray[x7] + rArray[x8] + rArray[x9] + rArray[x10];
textBox3.Text = rArray[x11] + rArray[x12] + rArray[x13] + rArray[x14] + rArray[x15];
textBox4.Text = rArray[x16] + rArray[x17] + rArray[x18] + rArray[x19] + rArray[x20];
}
【问题讨论】:
-
Random String Generator Returning Same String 的可能副本。那里贴了很多答案,您应该能够找到合适的答案。这是一个算法Fisher–Yates shuffle
-
使用 for 循环生成新字符。那里有很多不需要的重复代码
-
看这个。有一个 getletter 函数返回一个随机字母。 dotnetperls.com/random-lowercase-letter
-
使用 for/while 循环并将代码抽象为一个函数(所有 4 个文本框的代码相似)作为开始?