GetRan
В некоторых
программах (особенно в играх) иногда
требуется сгенерировать случайное
число. Самый простой способ
реализации данной задачи выглядит
так:
Private Sub Ran()
Dim a as Integer
a=Int(5*Rnd)
End Sub
Функция Rnd()
возвращает значение в диапазоне от 0
до 1. Таким образом умножив функцию Rnd()
на любое число (в нашем случае 5) мы
получаем число от 0 до данного числа.
Функция Int() просто убирает дробную
часть. На в данном решении можно найти
маленький, но очень существенный "глючок"
- каждый раз после старта программы
будут выдаваться одни и теже числа.
Данная проблема решается при помощи
процедуры Randomize(). На практике это
выглядит так:
Private Sub Ran()
Dim a as Integer
Randomize
a=Int(5*Rnd)
End Sub Но
и данный пример не безупречен. Изучая
его можно заметить что максимальное
значение практически никогда
выдаваться не будет,
так как для получения максимального
результата функция Rnd() должна
принять значение равное 1 (всего
данная функция может принимать 100 000
001 значений). Эта проблема решается
следующим путем:
Private Sub Ran()
Dim a as Integer
Randomize
a=Int(59*Rnd/10)
End Sub Теперь
все нормально. Программа выдает
максимальное значение также часто
как и все остальные. Если
максимальное значение хранится в
переменной (например Max), тогда пишем
следующий код:
Private Sub Ran()
Dim a as Integer
Randomize
a=Int(Val(Str(Max) & 9)*Rnd/10)
End Sub Для
начала функцией Str() преобразуем
содержимое переменной в строковое
значение, далее приставляем справа
девятку и преобразуем обратно в
числовое значение при помощи функции
Val(). Если вы хотите также задать
минимальную границу, тогда пишем
следующий код (минимальное значение
хранится в переменной Min):
Private Sub Ran()
Dim a as Integer
Randomize
a=Min + Int(Val(Str(Max-Min) & 9)*Rnd/10)
End Sub Если
в вашем проекте нужно часто
пользоваться случайными числами,
тогда не лишним будет создать
специальную функцию. И так приступим:
Public Function GetRan(Min as Integer, Max as Integer) as Integer
Randomize
GetRan=Min + Int(Val(Str(Max-Min) & 9)*Rnd/10)
End Function Как
видите - все очень просто. Скачать
пример функции GetRan вы можете отсюда.
Если у вас возникли вопросы, тогда
пишите на E-Mail
или оставляйте сообщение в гостевой
книге.
Назад
к списку примеров
|