ПОНЯТНО О Visual Basic NET (том 2)

         

Функции Rnd и Randomize


Запустите такую программу:

Dim p As Double

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

        p = Rnd()

        Debug.WriteLine(p)

End Sub

Вот результат:

0,705547511577606

Это случайное число из диапазона от 0 до 1. Вырабатывает это число функция Rnd.

Щелкнем несколько раз по кнопке. Получим серию случайных чисел:

0,705547511577606

0,533424019813538

0,579518616199493



0,289562463760376

0,301948010921478

Завершим работу программы и снова ее запустим. Пощелкаем по кнопке. Получим ту же серию:

0,705547511577606

0,533424019813538

0,579518616199493

0,289562463760376

0,301948010921478

Выходит, что числа хоть и случайные, но после каждого запуска одинаковые. Не очень-то, получается, случайные. Как сделать их разными от запуска к запуску? Добавим кнопку и к ней процедуру с оператором  Randomize:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Randomize()

End Sub

После выполнения оператора Randomize числа будут и случайными и разными от запуска к запуску.

Как получить случайное число из диапазона от 0 до 20?

Так –   p = 20 * Rnd.

А из диапазона от 6 до 7?

Так –   p = 6 + Rnd.

А из диапазона от 200 до 210?

Так –   p = 200 + 10 * Rnd.

Проверьте.

Как получить случайное целое число из диапазона от 200 до 210?  Так – 

p = Fix (200 + 11 * Rnd)

Функция Fix «отрезает» дробную часть у числа. Подумайте, почему я написал 11, а не 10. Если не можете додуматься, вычисляйте эту формулу по этапам:

        s = 11 * Rnd()

        t = 200 + s

        p = Fix(t)

        Debug.WriteLine(s)

        Debug.WriteLine(t)

        Debug.WriteLine(p)

Запуская этот фрагмент, наблюдайте за значениями  s, t и p. Дождитесь, когда s перевалит за 10. Вы сразу все поймете. Если бы я в формуле вместо 11 написал 10, число p равное 210 никогда бы нам не встретилось.



Содержание раздела