Uma recomendação que eu faço para quem estiver lendo isso é que faça além do que é proposto nos desafios.
Como o desafio diz para ser dinâmico, fiz com que o usuário digitasse 2 números, um para cada variável que criei (inicio e fim).
Essas variáveis fazem um calculo com o numeroSecreto (${numeroSecreto - inicio} e ${fim + numeroSecreto}) para definir um intervalo aleátorio e deixar uma boa margem de números para não facilitar a vida do usuário.
Esse calculo serve para o intervalo não deixar o numeroSecreto de fora. Já pensou se o numeroSecreto fosse 4, o inicio 5 e o fim 10... E a entrada de números serve para o usuário definir a dificuldade do jogo, ou seja, quanto maior a distancia entre os números escolhidos, maior a dificuldade.
Claro que existem várias outras maneiras, essa foi a que veio na minha cabeça e vocês podem tentar fazer ou criar outra lógica. Não deixei o código intencionalmente para vocês usarem os neurônios kkkkkk