Программирование
Веб программирование

Массив случайных неповторяюшихся чисел

 
 

     Всем привет, на этом уроке я хочу показать как сделать массив случайных неповторяющихся чисел. Наверное многие знают как генерировать случайное число, а как сделать массив и притом неповторяющихся чисел наверняка известно не всем.

Допустим нам нужно 5 случайных неповторяющихся целых чисел из диапазона от 1 до 9.

Создайте форму и разместите на ней кнопку (button). В процедуре кнопки запишите этот код.

  •         Dim t As Integer
  •         Dim p(5) As Integer
  •         Debug.WriteLine("")
  •         For i = 1 To 5
  • m:          Randomize()
  •             t = 9 * Rnd()
  •             For j = 1 To 5
  •                 If t = p(j) Then GoTo m
  •             Next
  •             p(i) = t
  •             Debug.WriteLine(p(i))
  •          Next

 

 

Нажмите на кнопку и в окошке immediate window появятся пять разных чисел. Теперь разберем этот код. В первой строке объявляем переменную t для случайных чисел. Во второй строке объявляем массив из пяти целых чисел     p(5). Создадим пустую строку при помаши Debug.WriteLine("") для того что бы каждая наша пятерочка чисел стояла чуть дальше от предыдущей. Далее счетчиковый цикл   Fori = 1 To 5 почему к 5 а потому что в данном случаи нам нужно 5 чисел. Две следуйшие строки генерируют случайное число для переменной t. Далее ещё один счетчиковый цикл Forj = 1 To 5. Внутри этого цикла программа сравнивает переменную t с массивом переменных p(j). Если же равенство обнаруживается то условие Then GoTo m возвращает программу к повторной генерации случайного числа на метку m:  . Если же равенства нет то программа спускается по ниже и полученное значение присваивает одному из пяти массивов  p(i) = t. Последняя строка Debug.WriteLine(p(i)) выводит нам полученные данные. Как видите на выходе получаются разные числа в заданном диапазоне. Подобные числа бывают очень нужны для создания игр, особенно логических.

 

 

 

 

      

 

 

 

 


Есть вопросы? Спроси на нашем форуме!!
Нет комментариев

Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.