Skip to main content

Функции генерации псевдослучайных чисел

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

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

rand​

Возвращает псевдослучайное число типа UInt32, равномерно распределённое среди всех чисел типа UInt32. Используется linear congruential generator.

rand64​

Возвращает псевдослучайное число типа UInt64, равномерно распределённое среди всех чисел типа UInt64. Используется linear congruential generator.

randConstant​

Создает константный столбец с псевдослучайным значением.

Синтаксис

randConstant([x])

Аргументы

Возвращаемое значение

  • Псевдослучайное число.

Тип: UInt32.

Пример

Запрос:

SELECT rand(), rand(1), rand(number), randConstant(), randConstant(1), randConstant(number)
FROM numbers(3)

Результат:

┌─────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 │
└────────────┴────────────┴──────────────┴────────────────┴─────────────────┴──────────────────────┘

Случайные функции для работы со строками

randomString​

randomFixedString​

randomPrintableASCII​

randomStringUTF8​

fuzzBits​

Синтаксис

fuzzBits([s], [prob])

Инвертирует каждый бит s с вероятностью prob.

Аргументы

  • s — String or FixedString
  • prob — constant Float32/64

Возвращаемое значение

Измененная случайным образом строка с тем же типом, что и s.

Пример

Запрос:

SELECT fuzzBits(materialize('abacaba'), 0.1)
FROM numbers(3)

Результат:

┌─fuzzBits(materialize('abacaba'), 0.1)─┐
│ abaaaja │
│ a*cjab+ │
│ aeca2A │
└───────────────────────────────────────┘