Назад к списку примеров
 

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 или оставляйте сообщение в гостевой книге.

 

Назад к списку примеров

 






Украинская Баннерная Сеть
Hosted by uCoz