Функции генерации случайных значений и ID
В данной статье при описании функций приняты следующие обозначения:
|
Функции генерации случайных значений
random_bool
Возвращает случайное логическое значение.
Спецификация функции
random_bool() :: <логическое значение>
Примеры
Случайное логическое значение
is_boolean(random_bool())
true
random_int
Возвращает случайное целое число в диапазоне [min
, max
).
Для более удобного синтаксиса используйте функцию rv_random_int .
|
Спецификация функции
random_int(min: <целое число>, max: <целое число>) :: <целое число>, <ошибка>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
min |
целое число |
Минимальное значение (включительно) |
да |
|
max |
целое число |
Максимальное значение (исключительно) |
да |
Ошибки
Функция random_int
может возвращать ошибки, для которых требуется обработка:
-
максимум
не большеминимума
.
Примеры
Случайное целое число от 0 до 10 (не включая 10)
i = random_int(0, 10) i >= 0 && i < 10
true
rv_random_int
Возвращает псевдослучайное целое число в диапазоне [min
, max
]. Любую из границ диапазона можно опустить, по умолчанию в качестве минимума используется 0
, а в качестве максимума — максимально возможное 64-битное число.
Спецификация функции
rv_random_int([min: <целое число>, max: <целое число>]) :: <целое число>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
min |
целое число |
Минимальное значение (включительно) |
|
нет |
max |
целое число |
Максимальное значение (включительно) |
|
нет |
Примеры
Случайное целое число от 0 до 10 (включая 10)
i = rv_random_int(0, 10) i >= 0 && i <= 10
true
random_float
Возвращает случайное число с плавающей точкой в диапазоне [min, max).
Спецификация функции
random_float(min: <число с плавающей точкой>, max: <число с плавающей точкой>) :: <число с плавающей точкой>, <ошибка>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
min |
число с плавающей точкой |
Минимальное значение (включительно). |
да |
|
max |
число с плавающей точкой |
Максимальное значение (исключительно). |
да |
Ошибки
Функция random_float
может возвращать ошибки, для которых требуется обработка:
-
max
не большеmin
Примеры
Случайное число с плавающей точкой от 0.0 до 10.0 (не включая 10.0)
f = random_float(0.0, 10.0) f >= 0 && f < 10
true
random_bytes
Криптографически стойкий генератор случайных чисел. Возвращает строковое значение, содержащее запрошенное количество случайных байтов.
Спецификация функции
random_bytes(длина: <целое число>) :: <строка>, <ошибка>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
длина |
целое число |
Количество генерируемых байт. Должно быть не больше 64 Кбайт. |
да |
Ошибки
Функция random_bytes
может возвращать ошибки, для которых требуется обработка:
-
длина
отрицательное -
длина
больше максимального значения (64 Кбайт)
Примеры
Генерация случайных байтов в кодировке base64
encode_base64(random_bytes(16))
LNu0BBgUbh7XAlXbjSOomQ==
Функции генерации ID
uuid_v4
Генерирует случайную строку UUIDv4.
Спецификация функции
uuid_v4() :: <строка>
Примеры
Создание UUIDv4
uuid_v4()
1d262f4f-199b-458d-879f-05fd0a5f0683
uuid_v7
Генерирует случайную строку UUIDv7. По умолчанию в качестве метки времени используется результат функции now()
.
Спецификация функции
uuid_v7(, [метка_времени: <метка времени> ]) :: <строка>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
метка_времени |
метка времени |
Метка времени, используемая для генерации UUIDv7. |
|
нет |
Примеры
Создание UUIDv7 с меткой времени по умолчанию
uuid_v7()
06338364-8305-7b74-8000-de4963503139
Создание UUIDv7 с явно указанной now
uuid_v7(now())
06338364-8305-7b74-8000-de4963503139
Создание UUIDv7 с произвольной меткой времени
uuid_v7(t'2020-12-30T22:20:53.824727Z')
0176b5bd-5d19-7394-bb60-c21028c6152b
community_id
Генерирует ID потока данных на основе спецификации Community ID.
Спецификация функции
community_id(source_ip: <строка>, destination_ip: <строка>, protocol: <целое число>, [source_port: <целое число>, destination_port: <целое число>, seed: <целое число> ]) :: <строка>, <ошибка>
Аргумент | Тип | Описание | По умолчанию | Обязателен |
---|---|---|---|---|
source_ip |
строка |
IP-адрес источника. |
да |
|
destination_ip |
строка |
IP-адрес назначения. |
да |
|
protocol |
целое число |
да |
||
source_port |
целое число |
Исходный порт или тип ICMP. |
нет |
|
destination_port |
целое число |
Порт назначения или код ICMP. |
нет |
|
seed |
целое число |
Произвольное входное число (seed) между 0 и 65 535. |
0 |
нет |
Ошибки
Функция community_id
может возвращать ошибки, для которых требуется обработка:
-
Невозможно разобрать IP-адрес источника.
-
Невозможно разобрать IP-адрес назначения.
-
Номер протокола вне диапазона [0; 255].
-
Номер порта источника вне диапазона [0; 65535].
-
Номер порта назначения вне диапазона [0; 65535].
-
Указан
seed
вне диапазона [0; 65535].
Примеры
TCP
community_id!(source_ip: "192.0.2.0", destination_ip: "198.51.100.0", source_port: 1122, destination_port: 3344, protocol: 6)
1:yQ6Snpz/rq5kekU4Yqbt5zCjHWM=
UDP
community_id!(source_ip: "192.0.2.0", destination_ip: "198.51.100.0", source_port: 1122, destination_port: 3344, protocol: 17)
1:o1hyPRzWSLSK8hSMFSCDlkppQQ0=
ICMP
community_id!(source_ip: "192.0.2.0", destination_ip: "198.51.100.0", source_port: 1122, destination_port: 3344, protocol: 1)
1:mrrlg1BzCI7PkjFBx+q1431HpLg=
RSVP
community_id!(source_ip: "192.0.2.0", destination_ip: "198.51.100.0", source_port: 1122, destination_port: 3344, protocol: 46)
1:fktxP6ndCPNrcDJ2XpM5DFoWtT4=