【问题标题】:Writing different arrays to text files in C# [duplicate]在C#中将不同的数组写入文本文件[重复]
【发布时间】:2014-05-23 16:42:52
【问题描述】:

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

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

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

【问题讨论】:

  • 这也将是一个问题,我认为:System.IO.StreamWriter(@"c:\CodeFolder\repeat.ToString() + ".txt")) 应该是System.IO.StreamWriter(@"c:\CodeFolder\" + repeat.ToStrign() + ".txt"))

标签: c# arrays file text random


【解决方案1】:

这段代码有两个问题。

  1. “ToString”调用在引用区域,字符串文字也是如此(不是函数调用)。这意味着您只会得到一个文本文件。你可能打算写:

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

【讨论】:

    【解决方案2】:

    试着把你的

    Random random = new Random();
    

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

    【讨论】:

    • 除了默认种子不是0,就是系统时间。如此快速地创建它仍然使用 same 种子。这也遗漏了路径字符串文字中的错误。
    • 我说的0只是个例子,不是真的。
    • 好的,请确保信息清晰/准确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2023-03-30
    • 2018-08-13
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2018-02-02
    相关资源
    最近更新 更多