在C#中将不同的数组写入文本文件

时间:2014-05-23 16:42:53

标签: c# arrays file text random

我已经汇总了一些代码来生成多个随机数组。代码每次都会生成一个不同的随机数组,但是当我尝试将每组新的数字写入单个文本文件时,每个文件都会写入相同的数字(来自第一个数组生成的数字)。有谁知道我如何编辑代码,以便每个文件都有一个不同的数组写入它?我将添加代码,该代码显示如果数字有帮助,如何生成数字。

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"))

这次第一个文件有一个唯一的数字数组写入,但每个其他文件包含相同的数组。不太清楚它是怎么回事。

2 个答案:

答案 0 :(得分:4)

此代码存在两个问题。

  1. “ToString”调用 in 引用区域,因此是字符串文字(不是函数调用)。这意味着您将只获得一个文本文件。你可能想写:

    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"c:\CodeFolder\" + repeat.ToString() + ".txt"))
    
  2. 通过非常快速地重新创建Random对象,您无法进行正确的重新播种。您需要将其移出for循环并进入您的函数或类。

答案 1 :(得分:1)

尝试放置

Random random = new Random();
在for循环之外的

。随机创建基于种子的随机值列表。如果默认种子为0,则重新创建Random变量,每个团队将重新启动相同的随机数列表,从而始终给出相同的数字。