Главная / Разработка алгоритмов / Генерация случайных чисел

Генерация случайных чисел в заданном диапазоне


Задание. Создать и отладить процедуру для получения N целых случайных чисел с равномерным распределением в заданном диапазоне.
Решение. Сначала создадим следующую элементарную процедуру:

Private Sub CommandButton1_Click()
Randomize
p = Rnd
Range("A3").Value = p
End Sub

Такая процедура при каждом запуске будет формировать только одно случайное число в диапазоне [0,1]. То есть в данном случае в ячейке А3 при каждом запуске появляется новое случайное число (рис.1).

Рисунок 1

Для получения случайного числа, например в диапазоне [0,100], необходимо умножить функцию Rnd на 100, а для округления полученного случайного числа можно использовать функцию Int или Fix. Таким образом, процедура будет иметь следующий вид:

Private Sub CommandButton1_Click()
Randomize
p = Int(Rnd * 100)
Range("A3").Value = p
End Sub

Дополним эту процедуру таким образом, чтобы она генерировала случайные числа в диапазоне [20,100]. Блок-схема алгоритма формирования случайных чисел в заданном диапазоне представлена на рис.2.



Рисунок 2

Ниже представлена процедура, реализующая данный:


Private Sub CommandButton1_Click()
Range("A1").Select 

ActiveCell.Value = "время"
Range("B1").Select
ActiveCell.Value = "сл.число"
Range("B2").Select
For i = 1 To 100
Randomize
p = 1 + Int(Rnd * 100)
ActiveCell.Value = p
ActiveCell.Offset(0, -1).Value = i
ActiveCell.Offset(1, 0).Activate
Next i
Range("B1").Select
End Sub

Данная процедура обеспечивает представление случайной величины в ячейках рабочего листа Excel (рис. 3). График изменения случайной величины во времени построен с помощью мастера диаграмм.


Рисунок 3 - Фрагмент рабочего листа Excel с результатами выполнения процедуры для получения случайных чисел в заданном диапазоне