Pensante 0 Denunciar post Postado Agosto 31, 2010 quero desenvolver em algoritmo 1º, para entender melhor e logico aprender, depois vou passar para php!!! Meu problema é que quero fazer um programa em algoritmo de um vetor q va ate 17 e gere numeros aleatorios e jogue no vetorB (só q os numeros do vetor é > 0 e <=17) eu gostaria de saber como se faz um sorteio aleatorio dentro de um para? ñ tenho ideia!! pesquisei mas o q achei foi sobre rand, mas como isto acontece, ele é só para numeros reais, eu quero numeros inteiros. eu achei uma linha de codigo assim: num <- rand * 20 o q realmente esta linha tah fazendo?! como eu faço um sorteio aleatório passo a passo? Obrigada pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites
M. Simão 0 Denunciar post Postado Setembro 1, 2010 Oi Pensante, Não vai ser difícil você fazer esse aplicativo do sorteio, veja só. Na verdade a função rand() retorna um valor inteiro e não um valor real como você está imaginando. E mais, você pode informar a faixa de números que ela deverá utilizar para gerar o número aleatório. Por exemplo: $numero = rand(1,17); A chamada acima vai atribuir a variável $numero um valor inteiro aleatório entre 1 e 17. Recomendo que você leia a documentação completa da função rand no manual do PHP, vou te passar o link abaixo. http://www.php.net/manual/pt_BR/function.rand.php Sobre o algoritmo que você pretende fazer, vou colocar em PHP com comentários, depois você transcreve para algoritmo, vai ser bom até para você fixar a lógica da coisa. <?php $qtd_de_bolas = 17; // Pelo que entendi, o sorteio será de 17 bolas, peguei a analogia do bingo // O 'for' abaixo vai gravar no vetor $numeros_sorteados os números sorteados // O vetor vai começar na posição 0 e vai até a posição 16, ou seja, 17 posições for ($contador = 0; $contador < $qtd_de_bolas; $contador ++) $numeros_sorteados[$contador] = rand(1,17); // A exibição poderia estar no 'for' acima, mas para fins didáticos vou colocar outro 'for' para ficar mais // claro que ficou gravado no vetor for ($contador = 0; $contador < $qtd_de_bolas; $contador ++) print("Bola ". $contador.": ". $numeros_sorteados[$contador]."<br />"); ?> No seu post você não informou se um número pode ser sorteado mais de uma vez, então no código acima o aplicativo não está fazendo esse teste, portanto podem haver números repetidos. Se for necessário, você vai ter que fazer um teste com if antes de gravar. Espero ter ajudado, um abraço! Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Setembro 1, 2010 int mt_rand(). No seu post você não informou se um número pode ser sorteado mais de uma vez, então no código acima o aplicativo não está fazendo esse teste, portanto podem haver números repetidos. Se for necessário, você vai ter que fazer um teste com if antes de gravar. Não precisa. Se você souber da teoria, seja da FIFO ou LIFO, você implementa um array contendo os números, mistura utilizando shuffle(), e depois retira cada um utilizando array_shift(). :). Compartilhar este post Link para o post Compartilhar em outros sites
M. Simão 0 Denunciar post Postado Setembro 1, 2010 No seu post você não informou se um número pode ser sorteado mais de uma vez, então no código acima o aplicativo não está fazendo esse teste, portanto podem haver números repetidos. Se for necessário, você vai ter que fazer um teste com if antes de gravar. Não precisa. Se você souber da teoria, seja da FIFO ou LIFO, você implementa um array contendo os números, mistura utilizando shuffle(), e depois retira cada um utilizando array_shift(). :). É, se você já tiver os conceitos de estrutura de dados também pode utilizar a lógica que o André falou, senão use o que você conhece mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Setembro 1, 2010 É, seria algo assim: $numbers = range( 1, 17 ); shuffle( $numbers ); while( !is_null( $current = array_shift( $numbers ) ) ) { printf( '%d<br />%s', $current, PHP_EOL ); } Compartilhar este post Link para o post Compartilhar em outros sites