我已经汇总了一些代码来生成多个随机数组。代码每次都会生成一个不同的随机数组,但是当我尝试将每组新的数字写入单个文本文件时,每个文件都会写入相同的数字(来自第一个数组生成的数字)。有谁知道我如何编辑代码,以便每个文件都有一个不同的数组写入它?我将添加代码,该代码显示如果数字有帮助,如何生成数字。
for (int repeat = 0; repeat < 100; repeat++)
{
Random random = new Random();
int[] randomNumbers = new int[50];
int[] array = new int[6];
//Generate array of random numbers
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"c:\CodeFolder\repeat.ToString() + ".txt"))
{
foreach (int number in array)
{
file.WriteLine(number);
}
}
}
编辑:对不起。第一篇文章中使用的部分代码输入错误。无论如何,我已经编辑了代码,现在它就像这样。
string fileName = repeat.ToString();
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"c:\CodeFolder\" + fileName + ".txt"))
这次第一个文件有一个唯一的数字数组写入,但每个其他文件包含相同的数组。不太清楚它是怎么回事。
答案 0 :(得分:4)
此代码存在两个问题。
“ToString”调用 in 引用区域,因此是字符串文字(不是函数调用)。这意味着您将只获得一个文本文件。你可能想写:
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"c:\CodeFolder\" + repeat.ToString() + ".txt"))
通过非常快速地重新创建Random
对象,您无法进行正确的重新播种。您需要将其移出for
循环并进入您的函数或类。
答案 1 :(得分:1)
尝试放置
Random random = new Random();
在for循环之外的。随机创建基于种子的随机值列表。如果默认种子为0,则重新创建Random变量,每个团队将重新启动相同的随机数列表,从而始终给出相同的数字。