Jump to content


Photo

Numeros Aleatorios Sem Repetição


  • Faça o login para participar
21 replies to this topic

#1 RobsonGutierrez

RobsonGutierrez

    Turista

  • Usuários
  • 25 posts
  • Sexo:Não informado

Posted 06/09/2006, 11:11

Olá Galera...

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 calcio

calcio

    PHP é oq manda! Heavy Metal na veia!

  • Usuários
  • 377 posts
  • Sexo:Não informado
  • Interesses:Desenvolvimento de websites e Gerenciamento de Projetos

Posted 06/09/2006, 11:24

Cara veja se isso resolve.

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();

Abraços Cálcio Heavy Metal

#3 RobsonGutierrez

RobsonGutierrez

    Turista

  • Usuários
  • 25 posts
  • Sexo:Não informado

Posted 06/09/2006, 12:04

Pois é... ele dá um erro:

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 calcio

calcio

    PHP é oq manda! Heavy Metal na veia!

  • Usuários
  • 377 posts
  • Sexo:Não informado
  • Interesses:Desenvolvimento de websites e Gerenciamento de Projetos

Posted 06/09/2006, 12:16

Foi mal aí...
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();
Abraços Cálcio Heavy Metal

#5 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 06/09/2006, 12:24

http://forum.wmonlin...howtopic=120761
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#6 RobsonGutierrez

RobsonGutierrez

    Turista

  • Usuários
  • 25 posts
  • Sexo:Não informado

Posted 06/09/2006, 14:20

Putz, mesmo assim nao deu...


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 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 06/09/2006, 14:25

Gera o número com rand(), adiciona letras e numeros, gera um hash md5() e remove as letras com uma ER.

#8 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 07/09/2006, 01:32

Gera o número com rand(), adiciona letras e numeros, gera um hash md5() e remove as letras com uma ER.

Fala sério...

----------

Minha já mencionada (valeu Felipe! :D) função [ http://forum.wmonlin...howtopic=120761 ] faz isso que você deseja. Use-a assim:

<?php

// Após declará-la:

foreach (getRandomNumbers(10, 1, 10, false, false) as $number) {
	print $number . '<br />';
}

?>
Do jeitinho que você quer. :rolleyes:

[]’s :DAté mais

#9 RobsonGutierrez

RobsonGutierrez

    Turista

  • Usuários
  • 25 posts
  • Sexo:Não informado

Posted 12/09/2006, 09:39

Paulo Freitas Valeu pela força mas ta dando um erro...

Fatal error: Call to undefined function: getrandomnumbers() in


blz..

Valeu Fuiiiiii (y)

#10 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 12/09/2006, 13:05

Olá

<?
$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 enthroned

enthroned

    eh noizeh!

  • Usuários
  • 257 posts
  • Sexo:Não informado

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 (y)



vc tem que entrar no link que ele postou e pegar a funcao neh, senao nao ira funcionar!!!

:rolleyes: :rolleyes:
=]

#12 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 12/09/2006, 13:42

vc tem que entrar no link que ele postou e pegar a funcao neh, senao nao ira funcionar!!!

Isso mesmo... :P

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

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... :notme:

[]’s :DAté mais

#13 RobsonGutierrez

RobsonGutierrez

    Turista

  • Usuários
  • 25 posts
  • Sexo:Não informado

Posted 15/09/2006, 09:59

Aeeee Agora sim deu certinho....


Obrigado a todos que me ajudaram

Usei a função que o Paulo Freitas postou... ai funcionou certinho

(y) (y) (y) (y)

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 :D

#14 thioz21

thioz21

    Normal

  • Usuários
  • 116 posts
  • Sexo:Masculino
  • Localidade:Passos

Posted 18/09/2006, 08:52

So fazer isto:

<?php

$numero = rand(1,999999);

echo"Seu numero é: $numero";

?>


#15 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 18/09/2006, 10:22

So fazer isto:

<?php

$numero = rand(1,999999);

echo"Seu numero é: $numero";

?>

Leia a dúvida novamente. =)

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

[]’s :DAté mais




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq