0

I am trying to write a series of numbers (depending on what the user specifies) to a file but the result of my code is the same number being printed every time the loop executes. Here is my code:

private void saveButton_Click(object sender, EventArgs e)
        {
            // Get number for amount of random numbers to write
            int number = int.Parse(numberTextBox.Text);

            // Create a new saveFileDialog objects
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Title = "Choose where to save the file";
            saveFileDialog.Filter = "Text File | *.txt";

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                StreamWriter writer = new StreamWriter(saveFileDialog.OpenFile());

                int randNum;
                Random random;
                // Create a for loop to write to file 
                for (int i = 0; i < number; i++)
                {
                    random = new Random();
                    randNum = random.Next(1, 101);
                    writer.WriteLine(randNum);
                }
                writer.Dispose();
            }
        }
``
Clancinio
  • 734
  • 6
  • 21
  • 40
  • 1
    Stop re-creating Random. It’s time-seeded so creating instances too fast will share the same seed and thus sequence. That’s the only relevant part of the question: duplicates exist. – user2864740 Mar 03 '20 at 05:06
  • 1
    The new Random() needs to be outside of the loop. – WillC Mar 03 '20 at 05:07

1 Answers1

3

This code block worked for me :

Do edit this according to your need. If you need futher elaboration. please refer @Mike Perrenoud's elaboration here.

Random random = new Random();

Console.WriteLine("Please enter the name of the numbers file");
string fileLotto = Console.ReadLine();
//creating the lotto file
FileStream fs = new FileStream("../../" + fileLotto + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
BufferedStream bs = new BufferedStream(fs);
Console.WriteLine("File created");
fs.Close();
StreamWriter sw = new StreamWriter("../.." + fileLotto + ".txt");

for(int i = 0; i < 6; i++)
{
    for(int j = 0; j < 7; j++)
    {
        //Console.Write(random.Next(1, 49));
        sw.Write(random.Next(1, 49) + " " );

    }
    sw.WriteLine();

}
sw.Close();
Selaka Nanayakkara
  • 3,296
  • 1
  • 22
  • 42