Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

263
Visualizações
¿Cómo puedo encontrar un conjunto de números aleatorios que sumen un número específico?

Este es mi código a continuación. El código en sí hace eco si la suma de tres números aleatorios es igual a 100. Por ahora, para obtener un resultado de 100 como $valuestotal , tengo que recargar mucho la página. Pero quiero obtener el resultado de 100 como $valuestotal cada vez que recargo la página. ¿Cómo puedo hacer esto?

Pensé que sería posible con un bucle en bucle. Pero da el mismo resultado x veces. Quiero que PHP siga probando diferentes valores aleatorios, y cuando alcance el valor de 100 como $valuestotal , debería hacer eco de $valuestotal ...

Lo que realmente quiero es, por ejemplo, quiero que tres números aleatorios obtengan un total de 100, por ejemplo, 35, 25 y 50. O 25, 15 y 60... y la lista continúa...

¿Cómo es esto posible?

 $values = rand(1, 100); $values2 = rand(1, 100); $values3 = rand(1, 100); $valuestotal = $values + $values2 + $values3; // while ($valuestotal === 100) { echo $values; echo '<br>'; echo $values2; echo '<br>'; echo $values3; echo "<br>"; echo $valuestotal; }
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Otro posible enfoque. El código es un poco más complejo que algunas de las otras respuestas, pero quería agregar una forma que solo necesitaría repetir una vez.

 $target = 100; $n = 3; while ($n) { if (1 < $n--) { $addend = rand(0, $target - ($n - 1)); $target -= $addend; $addends[] = $addend; } else { $addends[] = $target; } } var_dump($addends);

Básicamente, resta un número aleatorio entre 0 y el resto de la resta anterior n veces hasta que solo queda una repetición, y el resto es la última pieza. $n - 1 está ahí para que no reste demasiado al azar para que quede suficiente para el resto de las repeticiones.

over 4 years ago · Santiago Trujillo Relatório

0

No necesitará hacer un bucle dentro de un bucle. Por ejemplo, podrías hacer esto:

 <?php $keepChecking = true; $values = 0; $values2 = 0; $values3 = 0; $valuestotal = 0; while($keepChecking){ $values = rand(1, 100); $values2 = rand(1, 100); $values3 = rand(1, 100); $valuestotal = $values + $values2 + $values3; if ($valuestotal === 100){ $keepChecking = false; } } echo $values; echo '<br>'; echo $values2; echo '<br>'; echo $values3; echo "<br>"; echo $valuestotal; ?>

Los resultados pueden ser:

 2 37 61 100

Puede probar aquí: http://phpfiddle.org/lite

over 4 years ago · Santiago Trujillo Relatório

0

En un bucle while , el bloque se ejecutará siempre que la condición sea verdadera. Entonces puede pensar, ¿qué tiene que ejecutar varias veces y cuándo debe detenerse?

Lo que necesita ejecutar varias veces es la recopilación de números aleatorios:

 while ( ... ) { # roll dice, save numbers }

Ahora, esto debería detenerse cuando la suma sea 100. La condición establecida en el bucle debe ser verdadera para que se ejecute varias veces, por lo que, en este sentido, tiene que ejecutarse mientras la suma no sea 100. Aquí hay un punto clave que se invirtió. . Si su condición es falsa (por casualidad probablemente será después de la primera ejecución), entonces el ciclo ya se detuvo. Tienes que correr mientras la suma no es 100 para que cuando lo sea, ya no acumule números aleatorios. Luego procedes a repetirlos.

 $valuestotal = 0; while ($valuestotal != 100) { $value1 = rand(1, 100); $value2 = rand(1, 100); $value3 = rand(1, 100); $valuestotal = $value1 + $value2 + $value3; } echo "$value1<br>$value2<br>$value3<br>$valuestotal";

Como una sintaxis alternativa, puede almacenar los valores en una matriz y usar la función array_sum() :

 $numbers = []; while (array_sum($numbers) != 100) $numbers = [ rand(1, 100), rand(1, 100), rand(1, 100), ]; echo join(' + ', $numbers), ' = ', array_sum($numbers);
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda