Categorias:

Funções de geração de dados

UNIFORM

Gera um número pseudoaleatório distribuído uniformemente na faixa inclusiva [min, max].

Sintaxe

UNIFORM( <min> , <max> , <gen> )
Copy

Argumentos

min

Uma constante especificando o valor mínimo (inclusive) do número gerado.

max

Uma constante especificando o valor máximo (inclusive) do número gerado.

gen

Uma expressão que serve como uma fonte bruta de números aleatórios uniformes, tipicamente a função RANDOM. Para obter mais informações, consulte as funções de geração de dados Notas de uso.

Retornos

Se um ou ambos de min ou max for um número de ponto flutuante, UNIFORM retornará um número de ponto flutuante. Se ambos min e max forem números inteiros, UNIFORM retornará um número inteiro.

Notas de uso

Esta função está relacionada à função RANDOM, mas é diferente dela. Ambas as funções geram distribuições uniformes, mas há diferenças nas faixas dos valores retornados.

  • RANDOM gera inteiros pseudoaleatórios de 64 bits. Aceita uma semente opcional que permite que as sequências se repitam.

  • UNIFORM gera números inteiros aleatórios ou de ponto flutuante na faixa especificada.

Exemplos

Os exemplos a seguir demonstram como utilizar a função UNIFORM. Os valores exibidos na saída abaixo podem diferir dos valores retornados quando você mesmo executa estes exemplos.

Este exemplo gera cinco números inteiros aleatórios no intervalo de 1 a 10 (inclusive):

SELECT UNIFORM(1, 10, RANDOM()) FROM TABLE(GENERATOR(ROWCOUNT => 5));
Copy
+--------------------------+
| UNIFORM(1, 10, RANDOM()) |
|--------------------------|
|                        6 |
|                        1 |
|                        8 |
|                        5 |
|                        6 |
+--------------------------+

Este exemplo gera cinco números de ponto flutuante no intervalo de 0 a 1 (inclusive):

SELECT UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) FROM TABLE(GENERATOR(ROWCOUNT => 5));
Copy
+---------------------------------------+
| UNIFORM(0::FLOAT, 1::FLOAT, RANDOM()) |
|---------------------------------------|
|                         0.1180758313  |
|                         0.4945805484  |
|                         0.7113092833  |
|                         0.06170806767 |
|                         0.01635235156 |
+---------------------------------------+

Esse exemplo mostra que, se o argumento gen for uma constante, o resultado será uma constante:

SELECT UNIFORM(1, 10, 1234) FROM TABLE(GENERATOR(ROWCOUNT => 5));
Copy
+----------------------+
| UNIFORM(1, 10, 1234) |
|----------------------|
|                    7 |
|                    7 |
|                    7 |
|                    7 |
|                    7 |
+----------------------+