Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
fiz esse código que ele pega e gera numeros aleatorios de uma array e soma os numeros ate somar x,
aconteçe que ele usa numeros repetidos, e preciso que não repita os numeros.
alguem poderia dar uma ajuda?
código:
<?
$achar = 15;
$numeros = array(1, 2, 3, 4, 5);
$quant = sizeof($numeros);
function gera()
{
$v = 5;
$i = 0;
$soma = 0;
global $numeros;
global $quant;
global $sorteados;
global $soma;
global $achar;
global $a;
while ($i < $v)
{
$randomizar = $numeros[rand(0,$quant -1)];
$a[$i] = $randomizar;
$i++;
$sorteados .= "$randomizar";
$soma = array_sum($a);
}
}
while ($soma <> $achar)
{
unset($sorteados);
unset($soma);
unset($i);
unset($v);
gera();
}
$x = 1;
$y = 5;
$z = 0;
echo "Numeros sorteados: $sorteados";
echo "<br />";
echo "Soma: $soma";
echo "<br />";
echo "<br />";
while ($x <= $y)
{
echo "$x -> $a[$z]";
echo "<br />";
$x++;
$z++;
}
?>
Grato.
No caso "$numeros", como eu separo eles?
pois no meu caso são varios numeros, e tem uma soma final que é a que precisa dar.
preciso apenas que não repita.
>
No caso "$numeros", como eu separo eles?
pois no meu caso são varios numeros, e tem uma soma final que é a que precisa dar.
preciso apenas que não repita.
Deixa eu entender.
Você tem vários números e precisa somá-los até que cheguem o mais perto possível de um resultado que você especificou e no final quer que retorne esses números?
Ou precisa simplesmente da soma de todos os números e tmb deles aleatórios?
oque preciso é oque meu codigo faz,
preciso apenas limitar para que ele não use o mesmo numero mais de uma vez.
oque eu quero é que ele pegue randomicamente os numerros de uma array e some, ate dar um x resultado,
e depois que mostre quais numeros foram usados.
>
oque preciso é oque meu codigo faz,
preciso apenas limitar para que ele não use o mesmo numero mais de uma vez.
oque eu quero é que ele pegue randomicamente os numerros de uma array e some, ate dar um x resultado,
e depois que mostre quais numeros foram usados.
Então faça um shuffle($numeros) e pegue na sequencia até dar o que você quer e vai guardando os números usados em outro array.
Faz como ele disse, coloca os já utilizados num outro array e na hora da soma usa o in_array...
if(!in_array($numeros[$i], $usados))
{
$soma += $numeros[$i];
$usados[] = $numeros[$i];
}tentei usar como você amigo,
porem não consegui, sou novato em arrays e portanto não entendo muito bem como usar.
consegui,
quem quiser:
<?
$achar = 15;
$numeros = array(1, 2, 3, 4, 5);
$quant = sizeof($numeros);
function gera()
{
$v = 5;
$i = 0;
$soma = 0;
global $numeros;
global $quant;
global $sorteados;
global $soma;
global $achar;
global $a;
while ($i < $v)
{
$randomizar = $numeros[rand(0,$quant -1)];
$a[$i] = $randomizar;
$i++;
$sorteados .= "$randomizar";
$soma = array_sum($a);
}
}
while ($soma <> $achar)
{
unset($sorteados);
unset($soma);
unset($i);
unset($v);
gera();
$novo_array = array_unique($a);
$soman = array_sum($novo_array);
while ($soman <> $achar)
{
unset($sorteados);
unset($soma);
unset($i);
unset($v);
gera();
$novo_array = array_unique($a);
$soman = array_sum($novo_array);
}
}
$x = 1;
$y = 5;
$z = 0;
echo "Numeros sorteados: $sorteados";
echo "<br />";
echo "Soma: $soma";
echo "<br />";
echo "<br />";
while ($x <= $y)
{
echo "n -> $a[$z]";
echo "<br />";
$x++;
$z++;
}
?>
<?php
/*
* numeros Array, são os números que você quer usar para a soma.
* repeticoes Int, quantas vezes você quer fazer a soma dos números.
*/