2013-11-30 2 views
0

Я пытаюсь создать генератор случайных чисел, который выполняется несколько раз, но после каждого добавления добавленного ранее выбранного номера в список массивов, а затем исключая числа в массиве из случайной функции.Случайное число от 1 до 20, исключая уже выбранные числа

Любые идеи?

я попытался это, но он сделал все это в одной строке, но мне нужно его отдельно для вызова функции с использованием номера

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

    TextBox1.Text = "" 


    For x = 0 To 5 
    Start: 
     Randomize() 
     intNumber = Int((20 * Rnd()) + 1) 
     For y = 0 To 5 
      If intNumber = arrNumber(y) Then 
       GoTo Start 
      End If 
     Next y 
     arrNumber(x) = intNumber 

    Next x 
    For i = 0 To 5 
     TextBox1.Text = TextBox1.Text & (arrNumber(i)) & " , " 

    Next 


End Sub 
+2

Пожалуйста, покажите нам, что вы пробовали. – varocarbas

+2

Так что вы действительно хотите, это список из 20 элементов. И вы случайно выбираете один из них и удаляете его из списка. Это называется * shuffle *. Введите «[vb.net] shuffle» в поле поиска в правом верхнем углу этой страницы. –

+1

Выглядит как школьная задача. Пожалуйста, покажите свою работу и какова ваша проблема. – Stoleg

ответ

0

Здесь у вас есть пример кода, который вы должны быть в состоянии адаптироваться к точным требования легко. Он включает в себя две кнопки (newRandom и reset): один для генерации нового случайного числа (отображается через MessageBox), а другой - для удаления списка, в котором хранится все число, появившееся до сих пор.

Dim alreadyPicked As List(Of Integer) = New List(Of Integer) 

Private Sub newRandom_Click(sender As System.Object, e As System.EventArgs) Handles newRandom.Click 

    Dim curNumber As Integer 
    If (alreadyPicked.Count < 20) Then 
     Dim rand As Random = New Random 
     Do 
      curNumber = rand.Next(1, 20) 
     Loop While (alreadyPicked.Contains(curNumber)) 
    End If 


    If (curNumber > 0 AndAlso Not alreadyPicked.Contains(curNumber)) Then 
     alreadyPicked.Add(curNumber) 
     MessageBox.Show("The new random number is: " & curNumber.ToString()) 
    Else 
     MessageBox.Show("Error") 
    End If 

End Sub 

Private Sub reset_Click(sender As System.Object, e As System.EventArgs) Handles reset.Click 

    alreadyPicked = New List(Of Integer) 

End Sub 
+0

@ user3052562 Добро пожаловать. Но имейте в виду, что мое намерение просто показывало вам другой способ столкнуться с проблемой (и, следовательно, вы должны учиться на этом коде (и улучшать его настолько, насколько это необходимо), а не использовать его вслепую). Также обратите внимание, что я написал этот ответ только потому, что вы разместили свой код (= показал свои усилия), и было ясно, что вам нужны разные подсказки. – varocarbas

+0

У меня есть проблема с другой функцией в моем проекте, можете ли вы посмотреть здесь [link] http://stackoverflow.com/questions/20304209/trying-to-load-textbox-number-from-array будет очень благодарен – kaylin1997

+0

@ user3052562 Да, я видел это (на самом деле я сделал комментарий в этом сообщении :)). Смотрите ... это не то, как все работает в SO (по крайней мере, со мной): вы не можете рассчитывать на получение пользовательских алгоритмов для своих проблем. Как объяснялось выше, я написал этот код, чтобы дать вам солидный старт для работы; не воспринимать его вслепую (что вы, похоже, сделали, посмотрев код, который вы опубликовали в другом вопросе). Возможно, другой человек может помочь вам (скорее всего, я думаю, как я: только один раз, и я надеюсь, что вы узнаете об этом). Моя рекомендация (после просмотра ваших двух кодов) заключается в следующем: узнайте больше об основах ... – varocarbas

Смежные вопросы