Em um projeto de programação que embaralha uma lista de nomes usando um algoritmo que chama rand()…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Identificar o comportamento dos algoritmos no que diz respeito ao consumo de recursos como tempo de execução, espaço de memória e energia, entre outros.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Em um projeto de programação que embaralha uma lista de nomes usando um algoritmo que chama rand() repetidamente, por que é importante inicializar a semente do gerador de números aleatórios com um valor variável (por exemplo, tempo atual) antes do embaralhamento?
- A) Para garantir sequências diferentes entre execuções; semear com um valor variável evita a mesma ordem determinística.
- B) Inicializar com um número aleatório garante menos repetições na lista.
- C) O algoritmo rand() não precisa de semente para funcionamento correto.
- D) Usar sempre o mesmo valor de semente melhora a aleatoriedade.
- E) Sementes fixas geram números aleatórios únicos a cada execução.
✅ Resposta correta: alternativa A
Resolução passo a passo
- O gerador de números pseudoaleatórios, como o rand() da linguagem C, é determinístico: ele produz sempre a mesma sequência de números a partir de um mesmo estado inicial, chamado semente.
- Se a semente for fixa, por exemplo 1, toda execução do programa começa do mesmo estado e gera exatamente os mesmos valores na mesma ordem. Assim, o embaralhamento da lista de nomes produziria sempre a mesma permutação.
- Ao inicializar a semente com um valor variável, como o tempo atual, cada execução parte de um estado diferente, e portanto as sequências geradas e o embaralhamento resultante tendem a ser diferentes entre execuções. Esse é o motivo pelo qual a alternativa A está correta e coincide com o gabarito oficial.
- Por que as outras estão erradas:
- B) Usar um número aleatório como semente não reduz repetições na lista; o embaralhamento apenas reordena os nomes, sem eliminar elementos repetidos.
- C) O rand() depende de semente para produzir sequências diferentes; sem inicialização, em C o comportamento padrão equivale a usar semente 1, o que gera sempre a mesma sequência.
- D) Usar sempre o mesmo valor de semente faz o gerador repetir a mesma sequência, o que piora a variedade dos resultados, e não a melhora.
- E) Sementes fixas geram sempre a mesma sequência, não números únicos a cada execução; a imprevisibilidade entre execuções vem justamente da semente variável.
- Observação: o rand() gera pseudoaleatoriedade, não aleatoriedade verdadeira. Para aplicações de segurança, deve-se usar geradores criptográficos, mas para o contexto da questão a semente variável é o ponto central.
💡 Dica: Considere a importância da aleatoriedade em algoritmos.
Alternativa por alternativa
Geradores de números pseudoaleatórios produzem a mesma sequência a partir da mesma semente. Inicializar a semente com um valor variável (como o timestamp) altera o estado inicial do algoritmo e produz permutações diferentes em execuções distintas.
O aluno acredita que a semente aleatória controla a quantidade de repetições dos nomes na lista, confundindo embaralhar (reordenar) com eliminar duplicatas.
Por que engana: O aluno pode confundir a importância de usar uma semente variável com a ideia de que qualquer número aleatório é suficiente para garantir aleatoriedade nas execuções.
O aluno supõe que o rand() funciona sempre corretamente sem qualquer inicialização, ignorando que a semente define a sequência gerada.
O aluno pensa que repetir a mesma semente aumenta a imprevisibilidade, quando na verdade ela reproduz exatamente a mesma sequência de valores.
O aluno entende que sementes fixas produzem valores diferentes a cada execução, invertendo a relação entre semente e determinismo do gerador.
Raio-X da questão
gerador de números aleatórios
diagnostico
gerador de números aleatórios · algoritmos de programação
Revisar como funciona a inicialização de sementes em algoritmos aleatórios.
O aluno pode confundir a importância de usar uma semente variável com a ideia de que qualquer número aleatório é suficiente para garantir aleatoriedade nas execuções.
ciencia_tecnologia
pensamento_critico
cientifico
Questões parecidas com resolução
- Em um algoritmo que seleciona aleatoriamente um aluno de uma lista, qual elemento deve ser usado para garantir escolha…
- Em um cenário onde você usa listas em um programa, como garantir que a lista não contenha itens duplicados?
- Descreva como você pode aplicar um algoritmo de ordenação em uma lista de números aleatórios, explicando o processo e os…
- Em um algoritmo que soma notas usando uma variável acumuladora antes e dentro de um laço, por que é importante…
- Por que é importante seguir uma sequência lógica ao criar um algoritmo?
- Qual a importância de usar variáveis ao armazenar dados em programação?
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
