Перейти к основному содержимому
Перейти к основному содержимому

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

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

Связанные материалы

Примечание

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

Примечание

Приведённая ниже документация сгенерирована из системной таблицы system.functions.

fuzzBits

Добавлена в версии: v20.5.0

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

Синтаксис

fuzzBits(s, p)

Аргументы

  • s — значение типа String или FixedString, к которому применяется битовый фаззинг
  • p — вероятность инвертирования каждого бита, число от 0.0 до 1.0 Float*

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

Возвращает строку после фаззинга того же типа, что и sString или FixedString.

Примеры

Пример использования

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

rand

Введена в версии: v1.1.0

Возвращает случайное число типа UInt32 с равномерным распределением.

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

Синтаксис

rand([x])

Псевдонимы: rand32

Аргументы

  • x — необязательный аргумент, который игнорируется. Единственное назначение этого аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

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

Примеры

Пример использования

SELECT rand();
1569354847

rand64

Добавлена в версии: v1.1.0

Возвращает случайное целое число UInt64 с равномерным распределением.

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

Синтаксис

rand64([x])

Аргументы

  • x — Необязательный параметр, который игнорируется. Единственное назначение аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа UInt64 с равномерным распределением. UInt64

Примеры

Пример использования

SELECT rand64();
15030268859237645412

randBernoulli

Добавлена в версии: v22.10.0

Возвращает случайное число типа Float64, выборка из распределения Бернулли.

Синтаксис

randBernoulli(probability[, x])

Аргументы

  • probability — Вероятность успеха в диапазоне от 0 до 1. Float64
  • x — Необязательный аргумент, который игнорируется. Его единственное назначение — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное из указанного распределения Бернулли. UInt64

Примеры

Пример использования

SELECT randBernoulli(.75) FROM numbers(5)
┌─randBernoulli(0.75)─┐
│                   1 │
│                   1 │
│                   0 │
│                   1 │
│                   1 │
└─────────────────────┘

randBinomial

Впервые появилась в версии v22.10.0

Возвращает случайное число с плавающей запятой типа Float64, сгенерированное из биномиального распределения.

Синтаксис

randBinomial(experiments, probability[, x])

Аргументы

  • experiments — количество экспериментов UInt64
  • probability — вероятность успеха в каждом эксперименте в виде значения от 0 до 1 Float64
  • x — необязательный и игнорируемый аргумент. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное по указанному биномиальному распределению. UInt64

Примеры

Пример использования

SELECT randBinomial(100, .75) FROM numbers(5)
┌─randBinomial(100, 0.75)─┐
│                      74 │
│                      78 │
│                      76 │
│                      77 │
│                      80 │
└─────────────────────────┘

randCanonical

Добавлена в версии: v22.11.0

Возвращает случайное число типа Float64 с равномерным распределением на отрезке от 0 (включительно) до 1 (не включая).

Синтаксис

randCanonical([x])

Аргументы

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

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

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

Примеры

Пример использования

SELECT randCanonical();
0.345217890123456

randChiSquared

Появилась в версии: v22.10.0

Возвращает случайное число типа Float64, распределённое по распределению хи-квадрат.

Синтаксис

randChiSquared(degree_of_freedom[, x])

Аргументы

  • degree_of_freedom — Число степеней свободы. Float64
  • x — Необязательный аргумент, который игнорируется. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное по указанному распределению хи-квадрат. Float64

Примеры

Пример использования

SELECT randChiSquared(10) FROM numbers(5)
┌─randChiSquared(10)─┐
│ 10.015463656521543 │
│  9.621799919882768 │
│   2.71785015634699 │
│ 11.128188665931908 │
│  4.902063104425469 │
└────────────────────┘

randConstant

Введена в: v1.1.0

Генерирует одно случайное значение, которое остается постоянным для всех строк при текущем выполнении запроса.

Эта функция:

  • Возвращает одно и то же случайное значение для каждой строки в рамках одного запроса
  • Выдает разные значения при каждом отдельном выполнении запроса

Полезна для задания единых случайных seed-значений или идентификаторов для всех строк набора данных.

Синтаксис

randConstant([x])

Аргументы

  • x — необязательный аргумент, который игнорируется. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает столбец типа UInt32, содержащий одно и то же случайное значение в каждой строке. UInt32

Примеры

Базовое использование

SELECT randConstant() AS random_value;
| random_value |
|--------------|
| 1234567890   |

Использование с параметром

SELECT randConstant(10) AS random_value;
| random_value |
|--------------|
| 9876543210   |

randExponential

Появилась в версии: v22.10.0

Возвращает случайное число типа Float64, полученное из распределения экспоненциального распределения.

Синтаксис

randExponential(lambda[, x])

Аргументы

  • lambda — Параметр интенсивности (lambda-значение) распределения. Float64
  • x — Необязательный аргумент, который игнорируется. Единственная цель этого аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное по указанному экспоненциальному распределению. Float64

Примеры

Пример использования

SELECT randExponential(1/10) FROM numbers(5)
┌─randExponential(divide(1, 10))─┐
│              44.71628934340778 │
│              4.211013337903262 │
│             10.809402553207766 │
│              15.63959406553284 │
│             1.8148392319860158 │
└────────────────────────────────┘

randFisherF

Добавлена в: v22.10.0

Возвращает случайное число типа Float64, выбранное из F-распределения.

Синтаксис

randFisherF(d1, d2[, x])

Аргументы

  • d1 — степень свободы d1 в X = (S1 / d1) / (S2 / d2). Float64
  • d2 — степень свободы d2 в X = (S1 / d1) / (S2 / d2). Float64
  • x — необязательный аргумент, который игнорируется. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное по указанному F-распределению. Float64

Примеры

Пример использования

SELECT randFisherF(10, 3) FROM numbers(5)
┌─randFisherF(10, 20)─┐
│  0.7204609609506184 │
│  0.9926258472572916 │
│  1.4010752726735863 │
│ 0.34928401507025556 │
│  1.8216216009473598 │
└─────────────────────┘

randLogNormal

Добавлена в версии: v22.10.0

Возвращает случайное число типа Float64, полученное из логнормального распределения.

Синтаксис

randLogNormal(mean, stddev[, x])

Аргументы

  • mean — Среднее значение распределения. Float64
  • stddev — Стандартное отклонение распределения. Float64
  • x — Необязательный аргумент, значение которого игнорируется. Единственное назначение этого аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, полученное из заданного логнормального распределения. Float64

Примеры

Пример использования

SELECT randLogNormal(100, 5) FROM numbers(5)
┌─randLogNormal(100, 5)─┐
│  1.295699673937363e48 │
│  9.719869109186684e39 │
│  6.110868203189557e42 │
│  9.912675872925529e39 │
│ 2.3564708490552458e42 │
└───────────────────────┘

randNegativeBinomial

Введена в версии: v22.10.0

Возвращает случайное число типа Float64, полученное из отрицательного биномиального распределения.

Синтаксис

randNegativeBinomial(experiments, probability[, x])

Аргументы

  • experiments — Количество экспериментов. UInt64
  • probabilityВероятность неудачи в каждом эксперименте в виде значения между 0и1. Float64
  • x — Необязательный аргумент, который игнорируется. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное по заданному отрицательному биномиальному распределению UInt64

Примеры

Пример использования

SELECT randNegativeBinomial(100, .75) FROM numbers(5)
┌─randNegativeBinomial(100, 0.75)─┐
│                              33 │
│                              32 │
│                              39 │
│                              40 │
│                              50 │
└─────────────────────────────────┘

randNormal

Введена в версии: v22.10.0

Возвращает случайное число типа Float64, сгенерированное из нормального распределения.

Синтаксис

randNormal(mean, stddev[, x])

Аргументы

  • mean — Среднее значение распределения. Float64
  • stddev — Стандартное отклонение распределения. Float64
  • x — Необязательный и игнорируемый аргумент. Единственное назначение аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное из указанного нормального распределения.

Примеры

Пример использования

SELECT randNormal(10, 2) FROM numbers(5)
┌──randNormal(10, 2)─┐
│ 13.389228911709653 │
│  8.622949707401295 │
│ 10.801887062682981 │
│ 4.5220192605895315 │
│ 10.901239123982567 │
└────────────────────┘

randPoisson

Впервые появилась в версии: v22.10.0

Возвращает случайное число типа Float64, сгенерированное по распределению Пуассона.

Синтаксис

randPoisson(n[, x])

Аргументы

  • n — Среднее число наступлений. UInt64
  • x — Необязательный аргумент, который игнорируется. Его единственное назначение — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное по указанному распределению Пуассона. UInt64

Примеры

Пример использования

SELECT randPoisson(10) FROM numbers(5)
┌─randPoisson(10)─┐
│               8 │
│               8 │
│               7 │
│              10 │
│               6 │
└─────────────────┘

randStudentT

Появилась в версии: v22.10.0

Возвращает случайное число типа Float64, сгенерированное из t-распределения Стьюдента.

Синтаксис

randStudentT(degree_of_freedom[, x])

Аргументы

  • degree_of_freedom — Число степеней свободы. Float64
  • x — Необязательный параметр, который игнорируется. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число типа Float64, сгенерированное по указанному t-распределению Стьюдента. Float64

Примеры

Пример использования

SELECT randStudentT(10) FROM numbers(5)
┌─────randStudentT(10)─┐
│   1.2217309938538725 │
│   1.7941971681200541 │
│ -0.28192176076784664 │
│   0.2508897721303792 │
│  -2.7858432909761186 │
└──────────────────────┘

randUniform

Появилась в версии: v22.10.0

Возвращает случайное число типа Float64, равномерно распределённое на интервале [min,max][\min, \max].

Синтаксис

randUniform(min, max[, x])

Аргументы

  • min — левая граница диапазона (включительно). Float64
  • max — правая граница диапазона (включительно). Float64
  • x — необязательный аргумент, значение которого игнорируется. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает случайное число, равномерно выбранное из интервала, заданного min и max. Float64

Примеры

Пример использования

SELECT randUniform(5.5, 10) FROM numbers(5)
┌─randUniform(5.5, 10)─┐
│    8.094978491443102 │
│   7.3181248914450885 │
│    7.177741903868262 │
│    6.483347380953762 │
│    6.122286382885112 │
└──────────────────────┘

randomFixedString

Впервые добавлена в: v20.5.0

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

Синтаксис

randomFixedString(length)

Аргументы

  • length — длина строки в байтах. UInt*

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

Возвращает строку, заполненную случайными байтами. FixedString

Примеры

Пример использования

SELECT randomFixedString(13) AS rnd, toTypeName(rnd)
┌─rnd──────┬─toTypeName(randomFixedString(13))─┐
│ j▒h㋖HɨZ'▒ │ FixedString(13)                 │
└──────────┴───────────────────────────────────┘

randomPrintableASCII

Введена в версии: v20.1.0

Генерирует случайную строку ASCII с указанным количеством символов.

Если передать length < 0, поведение функции не определено.

Синтаксис

randomPrintableASCII(length[, x])

Аргументы

  • length — длина строки в байтах. (U)Int*
  • x — необязательный аргумент, значение игнорируется. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает строку со случайным набором печатаемых символов ASCII. String

Примеры

Пример использования

SELECT number, randomPrintableASCII(30) AS str, length(str) FROM system.numbers LIMIT 3
┌─number─┬─str────────────────────────────┬─length(randomPrintableASCII(30))─┐
│      0 │ SuiCOSTvC0csfABSw=UcSzp2.`rv8x │                               30 │
│      1 │ 1Ag NlJ &RCN:*>HVPG;PE-nO"SUFD │                               30 │
│      2 │ /"+<"with:=LjJ Vm!c&hI*m#XTfzz │                               30 │
└────────┴────────────────────────────────┴──────────────────────────────────┘

randomString

Появилась в версии: v20.5.0

Генерирует случайную строку с указанным количеством символов. Возвращаемые символы не обязательно являются символами ASCII, то есть они могут быть непечатными.

Синтаксис

randomString(length[, x])

Аргументы

  • length — длина строки в байтах. (U)Int*
  • x — необязательный аргумент, значение игнорируется. Единственная цель аргумента — предотвратить устранение общих подвыражений, когда один и тот же вызов функции используется несколько раз в запросе. Any

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

Возвращает строку, заполненную случайными байтами. String

Примеры

Пример использования

SELECT randomString(5) AS str FROM numbers(2)
���
�v6B�

randomStringUTF8

Добавлена в: v20.5.0

Генерирует случайную строку в кодировке UTF-8 с заданным количеством кодовых точек. Кодовые точки из неназначенных плоскостей (плоскости с 4 по 13) не возвращаются. Тем не менее возможно, что клиент, взаимодействующий с сервером ClickHouse, не сможет корректно отобразить сгенерированную строку UTF-8.

Синтаксис

randomStringUTF8(length)

Аргументы

  • length — длина строки в кодовых точках. (U)Int*

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

Возвращает строку, заполненную случайными кодовыми точками UTF-8. String

Примеры

Пример использования

SELECT randomStringUTF8(13)
┌─randomStringUTF8(13)─┐
│ 𘤗𙉝д兠庇󡅴󱱎󦐪􂕌𔊹𓰛       │
└──────────────────────┘