
Numeros Aleatorios Sem Repetição
#1
Posted 06/09/2006, 11:11
Fiz uma busca mas não encontrei sobre minha dúvida...
É o seguinte, acho q é simples de resolver.... tenho que fazer gerar uma sequencia de numeros aleatórios entre 1 e 10 mas quero q ele não repita alguns numeros por exemplo:
usei a função while pra gerar numeros de 1 a 10, até aí blz mas quero que ele misture esses números tipo ao invés de gerar 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10, ele mostre esses numeros todos misturados: 2 - 5 - 6 - 8 - 1 - 4 - 3 - 10 - 7 - 9... que a cada vez que a pag for atualizada ele misture e gere outra sequencia contendo numeros de 1 a 10...
OK
Agradeço desde já.... Vlw..
Fuiii
#2
Posted 06/09/2006, 11:24
esse exemplo é alfanumérico. mas vc pode fazer só com números ou letras
function aleatorio(){ $novo_valor= ""; $valor = "abcdefghijklmnopqrstuvwxyz0123456789"; srand((double)microtime()*1000000); for ($i=0; $i<6; $i++){ $novo_valor.= $novo_valor[rand()%strlen($valor)]; } return $novo_valor; } echo aleatorio();
#3
Posted 06/09/2006, 12:04
Notice: Uninitialized string offset: 3
eu estava tentando usar esse código:
for( $contagem = 1; $contagem <= 10; $contagem++ ) {
$num = rand(1,10);
echo "$num - ";
}
ele até gera os 10 numeros só que ele repete... e eu quero que ele liste mas sem repetir os numeros...
#4
Posted 06/09/2006, 12:16
agora ta certo!!
function aleatorio(){
$novo_valor= "";
$valor = "abcdefghijklmnopqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
for ($i=0; $i<6; $i++){
$novo_valor.= $valor[rand()%strlen($valor)];
}
return $novo_valor;
}
echo aleatorio();
#5
Posted 06/09/2006, 12:24
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#6
Posted 06/09/2006, 14:20
ele mostra, mas mostra tudo junto e ainda repete os numeros...
Tem como lista-los um embaixo do outro??? assim:
- 6
- 3
- 7
- 5
- 4
- 1
- 2
- 0
- 9
- 8
#7
Posted 06/09/2006, 14:25
#8
Posted 07/09/2006, 01:32
Fala sério...Gera o número com rand(), adiciona letras e numeros, gera um hash md5() e remove as letras com uma ER.
----------
Minha já mencionada (valeu Felipe!

<?php // Após declará-la: foreach (getRandomNumbers(10, 1, 10, false, false) as $number) { print $number . '<br />'; } ?>Do jeitinho que você quer.

[]’s

#9
Posted 12/09/2006, 09:39
Fatal error: Call to undefined function: getrandomnumbers() in
blz..
Valeu Fuiiiiii

#10
Posted 12/09/2006, 13:05
<? $numeros='0123456789'; $qtd=6; //Número de caracteres for($i=0;$i<$qtd;$i++) { echo $numeros[rand(0,strlen($numeros)-1)]."<br>\n"; } ?>
Até mais

Edição feita por: _Dudu_1533, 12/09/2006, 13:13.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador
Twitter: HostCheap
#11
Posted 12/09/2006, 13:33
Paulo Freitas Valeu pela força mas ta dando um erro...
Fatal error: Call to undefined function: getrandomnumbers() in
blz..
Valeu Fuiiiiii
vc tem que entrar no link que ele postou e pegar a funcao neh, senao nao ira funcionar!!!


#12
Posted 12/09/2006, 13:42
Isso mesmo...vc tem que entrar no link que ele postou e pegar a funcao neh, senao nao ira funcionar!!!

Só não coloquei a função no meu post pois tu já tinha visto ela uai...

PS: Todos os códigos postados (tirando o meu, rs) são falhos (na proposta do tópico). Ou o pessoal não entendeu a pergunta, ou...

[]s

#13
Posted 15/09/2006, 09:59
Obrigado a todos que me ajudaram
Usei a função que o Paulo Freitas postou... ai funcionou certinho




Aqui o codigo completo caso alguém precisar:
<?php
/** * Função para gerar números aleatórios
* * @author Paulo Freitas <paulofreitas dot web at gmail dot com>
* @copyright Copyright © 2006, Paulo Freitas
* @license http://creativecommo...by-nc-sa/2.0/br Commons Creative
* @version 20060312
* @param int $qnt quantidade de números que deseja gerar
* @param int $min número mínimo que deseja gerar
* @param int $max número máximo que deseja gerar
* @param bool $repeat false se os números gerados podem repetir
* @param bool $sort true se os números gerados devem ser ordenados
* @param integer $sort_order critério de ordenação, sendo 0 para ordenação ascendente e 1 para ordenação descendente
* @return array|string números gerados ou mensagem de erro caso ocorra */
function getRandomNumbers($qnt, $min, $max, $repeat = false, $sort = true,
$sort_order = 0){ if ((($max - $min) + 1) >= $qnt) {
$numbers = array();
while (count($numbers) < $qnt) {
$number = mt_rand($min, $max);
if ($repeat) {
$numbers[] = $number;
} elseif (!in_array($number, $numbers)) {
$numbers[] = $number;
}
}
if ($sort) {
switch ($sort_order) {
case 0:
sort($numbers);
break;
case 1:
rsort($numbers);
break;
}
}
return $numbers;
} else {
return 'A faixa de valores entre $min e $max deve ser igual ou superior à ' .
'quantidade de números requisitados'; }}
// Após declará-la:
foreach (getRandomNumbers(10, 1, 10, false, false) as $number) {
print $number . '<br />';
}
?>
Fuiiiiii

#14
Posted 18/09/2006, 08:52
<?php $numero = rand(1,999999); echo"Seu numero é: $numero"; ?>
#15
Posted 18/09/2006, 10:22
Leia a dúvida novamente.So fazer isto:
<?php $numero = rand(1,999999); echo"Seu numero é: $numero"; ?>

PS: Aliás, leia todo tópico, não o título dele...

[]’s

1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)