首页 > 解决方案 > 使用未排序整数的随机列表创建文本文件

问题描述

下面是我尝试一种随机生成整数的方法,但有时它给我的整数比我想要的少,或者它甚至不会将它们写入文件。

//generates random integers and moves it into respective file
static void Randomgen(int Size)         
{
    StreamWriter SW = new StreamWriter("Test.txt");     // respective file
    Random random = new Random();  
             
    for (int i = 0; i < Size; i++)
    {
        SW.WriteLine(random.Next(0, int.MaxValue));
    }
}     

然后我将它调用到主要使用

Randomgen(100);
Console.ReadLine();

所以这都是一个更大项目的一部分。我必须对这些整数进行排序,并测试不同的排序以及它们在不同文件大小上的效率。我只是不知道为什么有时它会起作用,有时却不起作用,而且当它起作用时,它会产生我输入到该Randomgen方法中的任何内容。请有人解释为什么会这样。此外,当我尝试使用尺寸较小的方法(如 10)时,它只会创建没有整数列表的空白文本文件。

标签: c#text-files

解决方案


.Net 流是缓冲的,因此您需要在写入流后刷新流,因此要么SW.Flush()在末尾显式调用,要么更正确地处理流并使用 using 语句声明它:

static void Randomgen(int Size) {
  using (var SW = new StreamWriter("Test.txt")) { // using
    var random = new Random();                   
    for (int i = 0; i < Size; i++) {
      SW.WriteLine(random.Next(0, int.MaxValue));
    }
  }
}

C# 8.0+using语法:

static void Randomgen(int Size) {
  using var SW = new StreamWriter("Test.txt"); // using
  var random = new Random();                   
  for (int i = 0; i < Size; i++) {
    SW.WriteLine(random.Next(0, int.MaxValue));
  }
} 

推荐阅读