• Matéria: Informática
  • Autor: wanessamedeiros2
  • Perguntado 8 anos atrás

Criar uma função chamada “int numeroProximo(int n, int variacao)” que gera um número aleatório
“próximo” de “n”, podendo ser maior ou menor, porém a diferença entre o novo número e “n” não
pode exceder o valor de “variação”.

Respostas

respondido por: bokomoko
0
Os números são inteiros, 
O próprio número e a variação. A diferença entre o número e o aleatório deve ser menor que variação, para mais ou para menos.

Temos duas formas de fazer esse programa.

A forma mais ineficiente gerar um número aleatório qualquer e testar se ele está nesse intervalo, ou seja,
  gerado <= numero + variacao && gerado >= numero - variacao
Isso ficaria num loop até que a condição seja atendida. 

Dependendo do tamanho de variaçao e da forma como  números aleatórios são gerados isso pode precisar de várias tentativas até achar um aleatório que satisfaça a condição.

Outra forma mais direta é depreender que o aleatório pode ser gerado entre o valor da variação ao dobro e somado ao valor do número - variação.

Por exemplo

suponha que o número seja 3 e a variação seja 7
Isso significa que o aleatório próximo fica entre 3 - 7 = -4 e 3 + 7 = 10
De -4 até 10 temos (10-(-4)+1) = 15 = 7 * 2 + 1

Suponha que o número seja 32 e a variação seja 12
Então o intevalo válido vai de 32-12 = 20 até 32+12 = 44
(44-20+1) = 25 = 12 * 2 +1

Eis o programa escrito em C
https://repl.it/@bokomoko/aleatorio-proximo

Perguntas similares