Mobile App Development · Dart/Flutter

16 · Desafio Mega Sena

Simule um sorteio de 6 números únicos da Mega Sena (1 a 60) usando Random e um Set para garantir que nenhum número se repita.

1Objetivo da aula

Nesta aula você vai gerar números aleatórios com a classe Random da biblioteca dart:math, entender por que uma List pode conter valores repetidos e resolver esse problema usando um Set, que só aceita valores únicos. No final, você monta uma função que sorteia 6 números distintos entre 1 e 60, ordenados em ordem crescente.

2O que vamos aprender

import 'dart:math'

Biblioteca padrão do Dart com utilitários matemáticos, incluindo a classe Random.

Random()

Cria um gerador de números pseudoaleatórios. Cada execução do programa tende a produzir resultados diferentes.

nextInt(60) + 1

nextInt(n) sorteia um inteiro entre 0 e n - 1. Somar 1 desloca o intervalo para 1 a 60.

Set<int>

Coleção que não permite valores duplicados — ideal para acumular números sorteados sem repetição.

while (set.length < 6)

Continua sorteando e tentando adicionar ao Set até ele acumular 6 elementos distintos.

toList()..sort()

Converte o Set em List e ordena em ordem crescente usando o operador cascade ...

join(', ')

Junta os elementos de uma lista em uma única String, separados pelo texto informado.

3Exemplo comentado

import 'dart:math';

void main() {
  print('Bem-vindo(a) ao Simulador Mega Sena!');
  final numeros = realizarSorteioMegaSena();
  print('Números sorteados: ${numeros.join(', ')}');
}

List<int> realizarSorteioMegaSena() {
  final random = Random();
  final sorteados = <int>{};

  while (sorteados.length < 6) {
    sorteados.add(random.nextInt(60) + 1);
  }

  final resultado = sorteados.toList()..sort();
  return resultado;
}

4Saída esperada

Como o programa usa Random, os números sorteados mudam a cada execução. Um exemplo de saída possível:

Bem-vindo(a) ao Simulador Mega Sena!
Números sorteados: 4, 15, 22, 33, 47, 58

A saída varia a cada execução — apenas a quantidade de números (6), o intervalo (1 a 60) e a ausência de repetição são garantidos.

5Do conteúdo para a prática

6Prática sugerida