Mobile App Development · Dart/Flutter
Três passos até o sorteio sem repetição: um número aleatório, uma lista que pode repetir e, por fim, um Set que resolve o problema.
Exercício 1
Gera e exibe um único número aleatório entre 1 e 60 usando Random. Base para os dois exercícios seguintes, que expandem essa ideia para 6 números.
// Exercício 1: gerar um único número aleatório entre 1 e 60.
import 'dart:math';
void main() {
final random = Random();
// nextInt(60) sorteia um inteiro entre 0 e 59; somamos 1 para cobrir 1 a 60.
final numeroSorteado = random.nextInt(60) + 1;
print('Número sorteado: $numeroSorteado');
}
Saída esperada
Como o programa usa Random, a saída varia a cada execução. Exemplo de saída possível:
Número sorteado: 27
Como executar
dart run 16-Desafio_MegaSena/02_Exercicios/codigo_fonte/exercicio_01_numero_aleatorio.dart
Exercício 2
Gera uma lista com 6 números aleatórios entre 1 e 60 usando List<int> e um laço for. Como a lista não impede duplicatas, rodar o programa algumas vezes mostra que números repetidos podem aparecer — o problema que o exercício 3 e o desafio final precisam resolver.
// Exercício 2: gerar uma lista de 6 números aleatórios entre 1 e 60.
// Atenção: usando List, números repetidos podem aparecer no resultado.
import 'dart:math';
void main() {
final random = Random();
final numeros = <int>[];
for (var i = 0; i < 6; i++) {
numeros.add(random.nextInt(60) + 1);
}
print('Números sorteados (podem repetir): $numeros');
}
Saída esperada
A saída varia a cada execução e pode conter números repetidos. Exemplo de saída possível:
Números sorteados (podem repetir): [12, 45, 12, 3, 58, 21]
Como executar
dart run 16-Desafio_MegaSena/02_Exercicios/codigo_fonte/exercicio_02_lista_com_repeticao.dart
Exercício 3
Resolve o problema do exercício 2 usando um Set<int>, que não permite valores duplicados. O laço while continua sorteando até o Set acumular 6 números distintos; depois converte para List e ordena antes de exibir.
// Exercício 3: gerar 6 números aleatórios entre 1 e 60 sem repetição.
// Set não permite valores duplicados, então resolve o problema do exercício 2.
import 'dart:math';
void main() {
final random = Random();
final sorteados = <int>{};
// Continua sorteando até o Set acumular 6 números distintos.
while (sorteados.length < 6) {
sorteados.add(random.nextInt(60) + 1);
}
final resultado = sorteados.toList()..sort();
print('Números sorteados (sem repetição): $resultado');
}
Saída esperada
A saída varia a cada execução, mas nunca terá números repetidos e sempre virá ordenada. Exemplo de saída possível:
Números sorteados (sem repetição): [5, 14, 19, 30, 41, 56]
Como executar
dart run 16-Desafio_MegaSena/02_Exercicios/codigo_fonte/exercicio_03_lista_sem_repeticao.dart