在c#中向文本文件写入不同的数组

本文关键字:数组 文件 文本 | 更新日期: 2023-09-27 18:04:53

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

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"))
这一次,第一个文件写入了一个唯一的数字数组,但每个其他文件都包含相同的数组。不太清楚这是怎么回事

在c#中向文本文件写入不同的数组

这段代码有两个问题。

  1. "ToString"调用是引号内,所以是字符串字面值(不是函数调用)。这意味着您只会得到一个文本文件。你可能想写:

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

试着把

Random random = new Random();

在for循环之外。Random创建一个基于种子的随机值列表。如果默认种子值为0,重新创建随机变量,每个团队将重新启动相同的随机数列表,因此总是给出相同的数字。