2016-09-17 5 views
0

Я пытаюсь создать случайные числа в зависимости от ввода пользователя. Поэтому, если пользователь вводит 10, я хочу сгенерировать 10 случайных чисел. Я получаю пользовательский ввод из текстового поля.Генерировать случайный номер

private void GenerateRandomNumber() 
      { 

       int count = 1; 

       //Int32.TryParse(GeneratetextBox.Text, out UserNumber); 
       UserNumber = Convert.ToInt32(GeneratetextBox.Text); 

       ///creates random object to produce random values 
       Random randomNumbers = new Random(); 

       while (count == UserNumber) 
       { 
        //UserNumber = randomNumbers.Next(100); 

        listBox.Items.Add(randomNumbers.Next(100)); 

        count = count + 1; 
       } 

       //for (count = UserNumber; count == UserNumber; count++) 
       //{ 
       // UserNumber = randomNumbers.Next(100); 

       // listBox.Items.Add(randomNumbers.Next(100)); 

       // count = count + 1; 
       //} 
    } 
+2

'while (count == UserNumber)' когда это правда? –

+1

Хорошо, в чем ваш вопрос? –

+0

Я пытаюсь создать случайные числа в соответствии с пользовательским вводом. Поэтому, если пользователь вводит 30, тогда я должен генерировать 30 случайных чисел. – Becca

ответ

2

Попробуйте это genearate случайных чисел:

 private void GenerateRandomNumber() 
     {     
      int userNumber= Convert.ToInt32(GeneratetextBox.Text); 

      Random randomNumbers = new Random(); 

      // loop until i is not les than userNumber 

      for (int i = 0; i < userNumber; i++){ 
        // generate random number and add it to the list. 
        int randNumber= randomNumbers.Next(100); 
        listBox.Items.Add(randNumber); 
      } 
      } 

      private void button1_Click(object sender, EventArgs e) 
      { 
      // clear listbox before generating new numbers 
      listBox.Items.Clear(); 
      GenerateRandomNumber(); 
      } 

Если ваш запуск этого метода с кнопкой не забудьте очистить ListBox перед созданием новых randnubers.

+0

Я получаю номера рандомов, но они больше, чем ввод пользователя. – Becca

+0

@Becca только что сделал редактирование, не забудьте очистить свой список, иначе он добавит случайные числа в список и будет иметь больше значений, чем требуется пользователю. –

+0

Спасибо @Timon сообщение. Теперь он отлично работает. :) – Becca

1

Ваши циклы while останавливаются, когда count отличается от UserNumber, поэтому, поскольку вы инициализируете count = 1, вам нужно иметь UserNumber = 1, если вы хотите, чтобы код выполнялся while.

Итак, вам нужно зафиксировать условие при:

собственного недействительного GenerateRandomNumber() {

  int count = 1; 

      //Int32.TryParse(GeneratetextBox.Text, out UserNumber); 
      UserNumber = Convert.ToInt32(GeneratetextBox.Text); 

      ///creates random object to produce random values 
      Random randomNumbers = new Random(); 

      while (count <= UserNumber) 
      { 
       //UserNumber = randomNumbers.Next(100); 

       listBox.Items.Add(randomNumbers.Next(100)); 

       count = count + 1; 
      } 

      //for (count = UserNumber; count == UserNumber; count++) 
      //{ 
      // UserNumber = randomNumbers.Next(100); 

      // listBox.Items.Add(randomNumbers.Next(100)); 

      // count = count + 1; 
      //} 
} 

Таким образом, код внутри время перестанет выполняться, когда UserNumber больше, чем рассчитывать, это то, что вы ищете.