Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funciones para generar números aleatorios

Todas las funciones de esta sección aceptan cero o un argumento. El único propósito del argumento (si se proporciona) es evitar la eliminación de subexpresiones comunes, de modo que dos ejecuciones distintas de la misma función aleatoria dentro de una fila devuelvan valores aleatorios diferentes.

Contenido relacionado

fuzzBits

Introducido en: v20.5.0

Invierte los bits de la cadena de entrada s, con una probabilidad p para cada bit.

Sintaxis

fuzzBits(s, p)

Argumentos

  • sString o FixedString sobre el que se realiza el fuzzing de bits en String o FixedString
  • p — Probabilidad de invertir cada bit, como un número entre 0.0 y 1.0 Float*

Valor devuelto

Devuelve una cadena con fuzzing del mismo tipo que s: String o FixedString

Ejemplos

Ejemplo de uso

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

rand

Introducido en: v1.1.0

Devuelve un número UInt32 aleatorio con distribución uniforme.

Utiliza un generador pseudoaleatorio no criptográfico con un estado inicial obtenido del sistema, lo que significa que, aunque parece aleatorio, no es verdaderamente aleatorio y puede resultar predecible si se conoce el estado inicial. En los casos en que la aleatoriedad verdadera sea crucial, considere usar métodos alternativos, como llamadas a nivel del sistema o la integración con bibliotecas externas.

Sintaxis

rand([x])

Alias: rand32

Argumentos

Valor devuelto

Devuelve un número aleatorio de tipo UInt32. UInt32

Ejemplos

Ejemplo de uso

SELECT rand();
1569354847

rand64

Introducido en: v1.1.0

Devuelve un número UInt64 aleatorio con distribución uniforme.

Utiliza un generador pseudoaleatorio no criptográfico con un estado inicial obtenido del sistema, lo que significa que, aunque parece aleatorio, no es realmente aleatorio y puede ser predecible si se conoce el estado inicial. En situaciones en las que la verdadera aleatoriedad sea crucial, considere usar métodos alternativos, como llamadas a nivel de sistema o la integración con bibliotecas externas.

Sintaxis

rand64([x])

Argumentos

Valor devuelto

Devuelve un número aleatorio UInt64 con distribución uniforme. UInt64

Ejemplos

Ejemplo de uso

SELECT rand64();
15030268859237645412

randBernoulli

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución de Bernoulli.

Sintaxis

randBernoulli(probability[, x])

Argumentos

  • probability — La probabilidad de éxito, expresada como un valor entre 0 y 1. Float64
  • x — Opcional; se ignora. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada de función se utiliza varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio Float64 obtenido de la distribución de Bernoulli especificada. UInt64

Ejemplos

Ejemplo de uso

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

randBinomial

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución binomial.

Sintaxis

randBinomial(experiments, probability[, x])

Argumentos

  • experiments — El número de experimentos UInt64
  • probability — La probabilidad de éxito en cada experimento, como un valor entre 0 y 1 Float64
  • x — Opcional y se ignora. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a la función se utiliza varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución binomial especificada. UInt64

Ejemplos

Ejemplo de uso

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

randCanonical

Introducido en: v22.11.0

Devuelve un número Float64 aleatorio con distribución uniforme entre 0 (incluido) y 1 (excluido).

Sintaxis

randCanonical([x])

Argumentos

Valor devuelto

Devuelve un número aleatorio de tipo Float64. Float64

Ejemplos

Ejemplo de uso

SELECT randCanonical();
0.345217890123456

randChiSquared

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución chi-cuadrado.

Sintaxis

randChiSquared(degree_of_freedom[, x])

Argumentos

  • degree_of_freedom — Grados de libertad. Float64
  • x — Opcional e ignorado. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a la función se usa varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución chi-cuadrado especificada. Float64

Ejemplos

Ejemplo de uso

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

randConstant

Introducida en: v1.1.0

Genera un único valor aleatorio que permanece constante en todas las filas de la ejecución actual de la consulta.

Esta función:

  • Devuelve el mismo valor aleatorio para cada fila dentro de una misma consulta
  • Produce valores diferentes en ejecuciones de consultas distintas

Resulta útil para aplicar semillas aleatorias o identificadores consistentes en todas las filas de un conjunto de datos

Sintaxis

randConstant([x])

Argumentos

Valor devuelto

Devuelve una columna de tipo UInt32 que contiene el mismo valor aleatorio en cada fila. UInt32

Ejemplos

Uso básico

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

Uso con un parámetro

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

randExponential

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución exponencial.

Sintaxis

randExponential(lambda[, x])

Argumentos

  • lambda — Parámetro de tasa, o valor lambda, de la distribución Float64
  • x — Opcional; se ignora. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a función se utiliza varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución exponencial especificada. Float64

Ejemplos

Ejemplo de uso

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

randFisherF

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución F.

Sintaxis

randFisherF(d1, d2[, x])

Argumentos

  • d1 — grado de libertad d1 en X = (S1 / d1) / (S2 / d2). Float64
  • d2 — grado de libertad d2 en X = (S1 / d1) / (S2 / d2). Float64
  • x — Opcional; se ignora. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando se utiliza la misma llamada a función varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución F especificada Float64

Ejemplos

Ejemplo de uso

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

randLogNormal

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución log-normal.

Sintaxis

randLogNormal(mean, stddev[, x])

Argumentos

  • mean — El valor medio de la distribución. Float64
  • stddev — La desviación estándar de la distribución. Float64
  • x — Es opcional y se ignora. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a la función se usa varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución log-normal especificada. Float64

Ejemplos

Ejemplo de uso

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

randNegativeBinomial

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución binomial negativa.

Sintaxis

randNegativeBinomial(experiments, probability[, x])

Argumentos

  • experiments — El número de experimentos. UInt64
  • probabilityLa probabilidad de fallo en cada experimento, como un valor entre 0y1. [Float64`](/reference/data-types/float)
  • x — Opcional e ignorado. El único propósito del argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a función se usa varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución binomial negativa especificada UInt64

Ejemplos

Ejemplo de uso

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

randNormal

Introducido en: v22.10.0

Devuelve un número aleatorio de tipo Float64 obtenido de una distribución normal.

Sintaxis

randNormal(mean, stddev[, x])

Argumentos

  • mean — La media de la distribución Float64
  • stddev — La desviación estándar de la distribución Float64
  • x — Opcional; se ignora. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a función se usa varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución normal especificada. Float64

Ejemplos

Ejemplo de uso

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

randPoisson

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución de Poisson.

Sintaxis

randPoisson(n[, x])

Argumentos

  • n — El número medio de ocurrencias. UInt64
  • x — Opcional e ignorado. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando se usa la misma llamada de función varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución de Poisson especificada. UInt64

Ejemplos

Ejemplo de uso

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

randStudentT

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio obtenido de una distribución t de Student.

Sintaxis

randStudentT(degree_of_freedom[, x])

Argumentos

  • degree_of_freedom — Grados de libertad. Float64
  • x — Opcional e ignorado. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a función se usa varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio de tipo Float64 obtenido de la distribución t de Student especificada. Float64

Ejemplos

Ejemplo de uso

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

randUniform

Introducido en: v22.10.0

Devuelve un número Float64 aleatorio distribuido uniformemente en el intervalo [\min, \max].

Sintaxis

randUniform(min, max[, x])

Argumentos

  • min — Límite izquierdo del rango (incluido). Float64
  • max — Límite derecho del rango (incluido). Float64
  • x — Opcional y se ignora. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a función se usa varias veces en una consulta. Any

Valor devuelto

Devuelve un número aleatorio con distribución uniforme en el intervalo formado por min y max. Float64

Ejemplos

Ejemplo de uso

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

randomFixedString

Introducido en: v20.5.0

Genera una cadena aleatoria de longitud fija con el número de caracteres especificado. Los caracteres devueltos no son necesariamente ASCII; es decir, puede que no sean imprimibles.

Sintaxis

randomFixedString(length)

Argumentos

  • length — Longitud de la cadena en bytes. UInt*

Valor devuelto

Devuelve una cadena rellena de bytes aleatorios. FixedString

Ejemplos

Ejemplo de uso

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

randomPrintableASCII

Introducida en: v20.1.0

Genera una cadena ASCII aleatoria con la cantidad de caracteres especificada.

Si se pasa length < 0, el comportamiento de la función no está definido.

Sintaxis

randomPrintableASCII(length[, x])

Argumentos

  • length — Longitud de la cadena, en bytes. (U)Int*
  • x — Opcional y se ignora. El único propósito del argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a función se utiliza varias veces en una consulta. Any

Valor devuelto

Devuelve una cadena con caracteres ASCII imprimibles aleatorios. String

Ejemplos

Ejemplo de uso

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

Introducido en: v20.5.0

Genera una cadena aleatoria con la cantidad especificada de caracteres. Los caracteres devueltos no son necesariamente ASCII; es decir, puede que no sean imprimibles.

Sintaxis

randomString(length[, x])

Argumentos

  • length — Longitud de la cadena en bytes. (U)Int*
  • x — Opcional e ignorado. El único propósito de este argumento es evitar la eliminación de subexpresiones comunes cuando la misma llamada a función se utiliza varias veces en una consulta. Any

Valor devuelto

Devuelve una cadena rellena de bytes aleatorios. String

Ejemplos

Ejemplo de uso

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

randomStringUTF8

Introducido en: v20.5.0

Genera una cadena UTF-8 aleatoria con el número especificado de puntos de código. No se devuelven puntos de código de planos no asignados (planos 4 a 13). Es posible que el cliente que interactúa con el servidor ClickHouse no pueda mostrar correctamente la cadena UTF-8 generada.

Sintaxis

randomStringUTF8(length)

Argumentos

  • length — Longitud de la cadena en puntos de código. (U)Int*

Valor devuelto

Devuelve una cadena compuesta por puntos de código UTF-8 aleatorios. String

Ejemplos

Ejemplo de uso

SELECT randomStringUTF8(13)
┌─randomStringUTF8(13)─┐
│ 󶡕𲉗𩍄ԍ╃𑄅󦨁󷌁󬾣𹼫󤓆󺜘󩶧         │
└──────────────────────┘
Navigation