0

I am trying to make a "Yahtzee" game on C#. So far I have created a form with a roll button which generates 5 random numbers from 1,6 in five different labels. I don't know how to get these random numbers into an array. This is the code I used for the roll button for the random numbers.

private void btnRoll_Click(object sender, EventArgs e)
{
    Random random = new Random();
    int randomNumber = random.Next(1, 7);
    lblDie1.Text = Convert.ToString(randomNumber);

    Random random2 = new Random();
    int randomNumber2 = random.Next(1, 7);
    lblDie2.Text = Convert.ToString(randomNumber2);

    Random random3 = new Random();
    int randomNumber3 = random.Next(1, 7);
    lblDie3.Text = Convert.ToString(randomNumber3);

    Random random4 = new Random();
    int randomNumber4 = random.Next(1, 7);
    lblDie4.Text = Convert.ToString(randomNumber4);

    Random random5 = new Random();
    int randomNumber5 = random.Next(1, 7);
    lblDie5.Text = Convert.ToString(randomNumber5);
}

Could someone please help me with how to store these numbers into an array?

David Guyon
  • 2,759
  • 1
  • 28
  • 40
Ghost
  • 25
  • 4
  • Start by reading about _arrays_ –  Feb 16 '16 at 07:14
  • In current state the post is too broad for SO as it is unclear from what level you need an explanation. It feels like you need help at least on arrays, using `Random` and mapping labels to array elements. You may want to search for similar questions first like https://www.bing.com/search?q=c%23+random+array to improve your post. – Alexei Levenkov Feb 16 '16 at 07:14
  • declare: `int[] randomNumbers;` use it like this: `randomNumbers[0] = random(1,7);` and `randomNumbers[1] = random(1,7);` and `randomNumbers[2] = random(1,7);` and so on... – Ian Feb 16 '16 at 07:19

1 Answers1

4

Do not re-create Random, it makes random values being badly skewed.

  // Simplest, not thread-safe
  private static Random random = new Random();

  private void btnRoll_Click(object sender, EventArgs e) {
    lblDie1.Text = random.Next(1, 7).ToString(); 
    lblDie2.Text = random.Next(1, 7).ToString(); 
    lblDie3.Text = random.Next(1, 7).ToString(); 
    lblDie4.Text = random.Next(1, 7).ToString(); 
    lblDie5.Text = random.Next(1, 7).ToString(); 
  }

In order to create an array you can use Linq:

  int[] numbers = Enumerable
    .Range(0, 5)
    .Select(x => random.Next(1, 7))
    .ToArray();

  // Let's print out the array:
  Console.Write(String.Join(" ", numbers));
Dmitry Bychenko
  • 180,369
  • 20
  • 160
  • 215