Oi! Seja bem-vindo!

Complementando o artigo como gerar números aleatórios no SQL, hoje vou te ensinar como gerar NÚMEROS ALEATÓRIOS ÚNICOS no SQL Server.

No primeiro artigo, exemplifiquei que você poderia gerar números aleatórios para preencher bilhetes de loteria… 🙂

Algumas pessoas pontuaram, e com razão, que na estratégia do vídeo anterior, poderiam aparecer números repetidos. Por essa razão, hoje te mostrarei uma estratégia que garante a não ocorrência desse tipo de situação:

Como Gerar Números Aleatórios Únicos no SQL Server

A estratégia de hoje é parecida com a do último artigo. A diferença, é que ao invés de simplesmente gerarmos números aleatórios, hoje nós criamos uma lista (ou domínio), organizamos esses números de forma aleatória, e depois selecionamos X números dessa lista.

Como cada número está na lista apenas uma vez, não há como um número sair repetido em um determinado sorteio.

Aqui vai o script utilizado no vídeo:


------------------------------------------------------------------
-- Números aleatórios únicos
------------------------------------------------------------------
-- Mega-sena:
;with cte as (
	select 
		1 as numero
	union all
	select 
		numero + 1
	from cte where numero < 60)
select * from cte
--select top 6 * from cte order by newid()


-- Loto-fácil
;with cte as (
	select 
		1 as numero
	union all
	select 
		numero + 1
	from cte where numero < 25)
select top 15 * from cte order by newid() 



-- Outros ranges e quantidades (ex: 10 números entre 9000 - 11000)
;with cte as (
	select 
		9000 as numero
	union all
	select 
		numero + 1
	from cte where numero < 11000)
select top 10 * from cte order by newid() option (maxrecursion 0)

CONCLUSÃO

Ai sim! Depois desse vídeo podemos preencher 100% de nossas próprias surpresinhas de loteria!

Engraçado que um aluno me disse: Pô Josué, mas do outro jeito a possibilidade de sair números repetidos já era ínfima… Eu concordo também, mas sabe como somos nós, Nerds da matemática: Queremos 100% de certeza… kkkk

Abraço do seu amigo Josué 🙂

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *