2020-10-26 10:29:30 +00:00
---
2022-04-09 13:29:05 +00:00
sidebar_position: 51
sidebar_label: "Функции генерации псевдослучайных чисел"
2020-10-26 10:29:30 +00:00
---
2020-05-12 16:37:21 +00:00
# Функции генерации псевдослучайных чисел {#functions-for-generating-pseudo-random-numbers}
2017-10-25 05:27:09 +00:00
2019-08-23 10:55:34 +00:00
Используются не криптографические генераторы псевдослучайных чисел.
2017-03-12 17:58:51 +00:00
В с е функции принимают ноль аргументов или один аргумент.
В случае, если передан аргумент - он может быть любого типа, и е г о значение никак не используется.
Этот аргумент нужен только для того, чтобы предотвратить склейку одинаковых выражений - чтобы две разные записи одной функции возвращали разные столбцы, с разными случайными числами.
2020-03-20 18:20:59 +00:00
## rand {#rand}
2017-03-12 17:58:51 +00:00
Возвращает псевдослучайное число типа UInt32, равномерно распределённое среди всех чисел типа UInt32.
Используется linear congruential generator.
2020-03-20 18:20:59 +00:00
## rand64 {#rand64}
2017-03-12 17:58:51 +00:00
Возвращает псевдослучайное число типа UInt64, равномерно распределённое среди всех чисел типа UInt64.
Используется linear congruential generator.
2018-10-16 10:47:17 +00:00
2020-05-12 16:37:21 +00:00
## randConstant {#randconstant}
Создает константный столбец с псевдослучайным значением.
**Синтаксис**
``` sql
randConstant([x])
```
2021-03-13 18:18:45 +00:00
**Аргументы**
2020-05-12 16:37:21 +00:00
2021-03-13 18:18:45 +00:00
- `x` — [выражение ](../syntax.md#syntax-expressions ), возвращающее значение одного из [поддерживаемых типов данных ](../data-types/index.md#data_types ). Значение используется, чтобы избежать [склейки одинаковых выражений ](index.md#common-subexpression-elimination ), если функция вызывается несколько раз в одном запросе. Необязательный параметр.
2020-05-12 16:37:21 +00:00
**Возвращаемое значение**
- Псевдослучайное число.
Тип: [UInt32 ](../data-types/int-uint.md ).
**Пример**
Запрос:
``` sql
SELECT rand(), rand(1), rand(number), randConstant(), randConstant(1), randConstant(number)
FROM numbers(3)
```
Результат:
``` text
┌─────rand()─┬────rand(1)─┬─rand(number)─┬─randConstant()─┬─randConstant(1)─┬─randConstant(number)─┐
│ 3047369878 │ 4132449925 │ 4044508545 │ 2740811946 │ 4229401477 │ 1924032898 │
│ 2938880146 │ 1267722397 │ 4154983056 │ 2740811946 │ 4229401477 │ 1924032898 │
│ 956619638 │ 4238287282 │ 1104342490 │ 2740811946 │ 4229401477 │ 1924032898 │
└────────────┴────────────┴──────────────┴────────────────┴─────────────────┴──────────────────────┘
```
2020-09-11 12:47:36 +00:00
# Случайные функции для работы с о строками {#random-functions-for-working-with-strings}
## randomString {#random-string}
## randomFixedString {#random-fixed-string}
## randomPrintableASCII {#random-printable-ascii}
## randomStringUTF8 {#random-string-utf8}
## fuzzBits {#fuzzbits}
**Синтаксис**
``` sql
fuzzBits([s], [prob])
```
Инвертирует каждый бит `s` с вероятностью `prob` .
2021-03-13 18:18:45 +00:00
**Аргументы**
2020-09-11 12:47:36 +00:00
- `s` — `String` or `FixedString`
- `prob` — constant `Float32/64`
**Возвращаемое значение**
Измененная случайным образом строка с тем же типом, что и `s` .
**Пример**
Запрос:
``` sql
SELECT fuzzBits(materialize('abacaba'), 0.1)
FROM numbers(3)
```
Результат:
``` text
┌─fuzzBits(materialize('abacaba'), 0.1)─┐
│ abaaaja │
│ a*cjab+ │
│ aeca2A │
└───────────────────────────────────────┘
2020-09-15 09:24:03 +00:00
```
2020-09-11 12:47:36 +00:00