前言
好吧虽然现在c#的winform平台模式用的不多,不过还是记录一下解决的问题。
按照需求是要随机生成一份txt文档里面的某一行的内容,思路是先读取txt文档的行数记录下来,然后用Random方法生成随机数,但是有一个问题,需要保证生成的随机数具有不重复性。
按照度娘上的说法,有各种,比较多的是将随机生成的数字存储在一个数组中,当存入第二个数字开始,以后每存入一个数字就要和这个数组里面其他的进行比较。很遗憾我是没怎么看懂,不过自己想了一下用以下的方法
code
读取txt文本行数lineNum
int lineNum = File.ReadAllLines("C://a.txt").Length;
将每一行存储到一个数组a
int[] a = new int[lineNum];
for (int i = 0; i < a.Length; i++)
{
a[i] = i;
}
将a数组的内容传递给arraylist 的一个对象list
ArrayList list = new ArrayList(a);
假设我们最多生成6行内容,每次生成一个随机数,用arraylist.remove()将这个数字删除,之后再从里面生成
for (int j = 0; j < int.Parse(textBox1WriteCMNum.Text); j++)
{
string s = list[j].ToString();
int ds = int.Parse(s);
textBox1ShowCM.AppendText(line[ds]+"\r\n");
}
最后输出内容
for (int j = 0; j < int.Parse(textBox1WriteCMNum.Text); j++)
{
string s = list[j].ToString();
int ds = int.Parse(s);
textBox1ShowCM.AppendText(line[ds]+"\r\n");
}