Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Как пользоваться генератором случайных чисел?

Поиск:
Для генерации случайных чисел в VB используется оператор Rnd, который генерирует числа от 0 до 1. Т.е. это могут быть числа : 0,3267545; 0,79563; 0,0043678 и т.д. Если же мы будем умножать генерируемое число на 10, то интервал генерируемых чисел будет равняться уже от 0 до 10 (соответственно, если умножать на сто, то интервал генерируемых чисел будет равняться уже от 0 до 100). И вышеназванные числа будут иметь следующий вид: 3,267545; 7,9563; 0,043678. Чаще же всего нам нужны целые числа, без "хвостов". Для этого можно использовать функцию Int(), которая возвращает значение типа, совпадающего с типом аргумента, которое содержит целую часть числа. Расшифровываю: :)) функция Int() преобразует число в целое. Например:

Int(3,267545) = 3
Int(7,9563) = 8
Int(0,043678) = 0

А теперь соберём всё вместе: итак, чтобы получить случайное число от нуля до ста нужно
1.Умножить генерируемое число на сто: Rnd*100
2.И взять его целую часть: Int(Rnd*100).
Пример:
Код
X = Int(Rnd*100) 'получаем Х - случайное число от 0 до 100

Внимание!!! Ряд "случайных" чисел будет каждый раз повторяться, если Вы не установите в Form_Load инструкцию Randomize, которая инициализирует датчик случайных чисел:
Код
Private Sub Form_Load ()
   Randomize
End Sub

Ответ взят на: www.mtsecurity.narod.ru

Ну а для того, чтобы получить случайное число в определенном интервале можно воспользоваться формулой:
[5,15] = CInt(Rnd * (b - a) + a)
которая обозначает, что то что написано справа возвращает нам случайные значения (целые числа) в интервале
[a, b].
Вот так может выглядеть эта функция в VB:
Код
Private Function RndInInterval(LeftBorder As Integer, RightBorder As Integer) As Integer

   RndInInterval = CInt(Rnd * (RightBorder - LeftBorder) + LeftBorder)

End Function

Вот более подробный пример:
Код
Option Explicit

Private Sub Command1_Click()
   
   Dim i As Integer
   For i = 0 To 100
       Debug.Print RndInInterval(5, 15)
   Next

End Sub

Private Sub Form_Load()
   
   Randomize

End Sub

Private Function RndInInterval(LeftBorder As Integer, RightBorder As Integer) As Integer

   RndInInterval = CInt(Rnd * (RightBorder - LeftBorder) + LeftBorder)

End Function
Автор: cardinal
Сайт: http://






Просмотров: 8073

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную