Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Математические функции

Каждая математическая функция имеет один параметр – число (number). При использовании действительных чисел как констант разделителем целой и дробной части является точка. В разделе Derived Math Functions справочника по VBA можно найти формулы расчета математических функций, не являющихся встроенными функциями.

Математические функции

Функция

Описание

Abs

Возвращает абсолютную величину числа

Atn

Возвращает арктангенс числа

Cоs

Возвращает косинус угла*

Eхр

Возвращает степень числа e (еx)

Fiх

Возвращает целую часть числа

Int

Округляет число до меньшего целого числа

Log

Возвращает натуральный логарифм числа (основание е = 2.71828...)

Randomize

Инициирует генератор случайных чисел

Rnd

Возвращает случайное число

Sin

Возвращает синус угла*

Sgn

Возвращает знак числа

Sqr

Возвращает квадратный корень из числа

Тап

Возвращает тангенс угла*

*Углы задаются в радианах. Для перевода градусов в радианы умножьте градусы на /180.

Функции Int и Fix

Fix(5.72)=5

Int(5.72)=5

Fix (-3.666)=-3

Int(-3.666)=-4

Значения, возвращаемые функциями Int и Fix при положительных значениях аргумента, совпадают. В случае отрицательного аргумента функция Int возвращает ближайшее отрицательное целое число, меньшее либо равное аргументу, а Fix – ближайшее отрицательное целое число, большее либо равное аргументу.

Функция Log

Функция вычисляет натуральный логарифм числа.

Public Sub arr_log()

Dim a(1 To 10) As Single

For i = 1 To 10

a(i) = Log(i)

Debug.Print a(i)

Next i

End Sub

Десяти элементам одномерного массива присваиваются значения натуральных логарифмов в точках, равных номеру элемента массива.

Функции Randomize и Rnd

Функции используются для получения последовательности случайных чисел. Функция Randomize инициирует последовательность случайных чисел, передавая функции Rnd новое опорное число, а функция Rnd строит последовательность случайных чисел. Аргумент number не является обязательным для обеих функций.

Аргумент функции Randomize используется для установки начального значения будущей последовательности случайных чисел. Если аргумент опущен или равен нулю, в качестве опорного числа используется значение, возвращаемое системным таймером, – количество секунд, прошедших с начала текущих суток.

Функция Rnd (датчик случайных чисел) возвращает случайное число типа Single, меньшее 1 и большее или равное нулю. Аргумент number определяет способ генерации случайного числа:

  • если аргумент не задан или является положительным числом, то результатом является очередное число в последовательности;

  • если аргумент равен нулю, то возвращается предыдущее случайное число;

  • при отрицательном аргументе возвращается всегда одно и то же число, сгенерированное с использованием аргумента.

Пример

Процедура генерирует случайные числа в соответствии с заданными аргументами.

Sub rnd_num()

Randomize (0)

Debug.Print Rnd '0,1446241

Debug.Print Rnd(-1) ‘0,224007

Debug.Print Rnd() ‘3,584582E-02

Debug.Print Rnd(0) ‘3,584582E-02

Debug.Print Rnd() ‘8,635235E-02

Debug.Print Rnd(5) ‘0,1642639

Debug.Print Rnd(6) ‘0,1797358

Debug.Print Rnd(-5) ‘0,8383257

Debug.Print Rnd(5) ‘0,2874333

Debug.Print Rnd(-5) ‘0,8383257

Debug.Print Rnd(6) ‘0,2874333

End Sub

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

Создается последовательность чисел, в которой две пары совпадающих чисел. Это числа третье и четвертое (без аргумента и с аргументом, равным нулю) и числа восьмое и десятое, сгенерированные при использовании аргумента, равного –5.

Важно

  • Функция Randomize без аргументов записывается без скобок.

  • Перед вызовом функции Rnd используйте функцию Randomize для задания нового опорного числа.

  • Если функция Randomize не используется, то функция Rnd без аргументов использует в качестве опорного числа случайное число, возвращенное при предыдущем вызове или таймер, если функция Rnd используется первый раз.

  • Использование одинаковых чисел в качестве аргумента функции Randomize не вызывает выработку одинаковых последовательностей случайных чисел.

  • Для повторения последовательности случайных чисел следует вызвать функцию Rnd с отрицательным аргументом перед или после использования функции Randomize с числовым аргументом.

  • Для генерации случайных чисел в некотором диапазоне от A до B можно использовать формулу Int((B – A + 1) * Rnd + A), а формула 1+ Int(Rnd*N) генерирует целое число от 1 до N, где N >1.

  • Для получения чисел 0 и 1 удобно использовать формулу Int(Rnd*2).

Пример

Процедура моделирует игру "орлянка" или игру в кости.

Sub test_dice_coin()

'основная процедура

Dim num As Integer, m As Integer

Dim n As Integer, i As Integer

Dim h() As Integer, reply As Variant

Dim game As String

reply = MsgBox("Выбрасывание монеты", vbYesNo)

If reply = vbYes Then

game = "Орлянка"

ReDim h(0 To 1)

Else

game = "Игра в кости"

ReDim h(1 To 6)

End If

num = InputBox("Введите число выбрасываний")

For i = 1 To num

If reply = vbYes Then

n = coin(0, 1)

Else

n = dice(6)

End If

h(n) = h(n) + 1

Next i

Debug.Print game

For i = LBound(h) To UBound(h)

Debug.Print i, h(i)

Next i

End Sub

Function coin (A As Integer, B As Integer)

'моделирование выбрасывания монеты

coin = Int((B – A + 1) * Rnd() + A)

End Function

Function dice(n)

'моделирование бросания кости

dice = 1 + Int(Rnd() * n)

End Function

Функция coin возвращает значения 0 или 1, а функция dice возвращает значения от 1 до 6.

Массив переменной длины h используется для подсчета количества повторений каждого из возможных значений: 0 или 1 в случае игры в орлянку, от 1 до 6 в случае игры в кости.