tadarank afiliados

11 dezembro, 2009

Função Random (aleatório) que não se repete em Javascript - PseudoRandom

Háaaaaa

Direto tem gente reclamando de funções random, que, muitas vezes não se parecem nada aleatórias.

Tipo hoje, o brodi chamado luis henrique (kakaroto) tava reclamando que o random dele, muitas vezes, repetia o valor que saiu no sorteio anterior.

Ora, a probabilidade do número se repetir em um sorteio é bastante pequena para uma grande faixa de números (tipo 0 a 100) porém é uma probabilidade MUITO alta em faixa pequena de números (tipo 0 a 5).

Ora, se é aleatório, é aleatório. Mesmo que o número já tenha saído da última vez ele tem a probabilidade de sair novamente hehee.

Mas, como muita gente não fica satisfeito com esta possibilidade, bora gambiarrar mais uma vez pra impedir um número de se repetir.

Se este é seu caso, divirta-se com o código javascript abaixo (que eu chamei de 'pseudo-random'):

function pseudoRand(size){
 //gerando o rand de zero a 'size - 1'
 var randa = Math.floor(Math.random() * size);
 //testando se o rand novo é igual ao antigo
 if(typeof(oldrand)!='undefined'){
  while(randa==oldrand){
   //se for igual, eu gero um novo
   randa = Math.floor(Math.random() * size);
  }
 }
 //guardando o ultimo rand em uma var global
 window['oldrand'] = randa;
 //retornando o rand atual
 return randa;
}

Uso

//vai alertar um random de 0 a 3 sem possibilidade de repetir o anterior
alert(pseudoRandom(4))
Gostou da dica acima? Então clica nos botões de compartilhamento abaixo e me ajude a dica a subir no Google.

7 comentários:

  1. fala ai meu velho , como a gente nao pode faze publicidade


    coloquei la no site que eu to montando

    depois eu te mostro valeu
    um abraço para ti


    ficou show :)

    um abraço kakaroto

    ResponderExcluir
  2. hi.. just dropping by here... have a nice day! http://kantahanan.blogspot.com/

    ResponderExcluir
  3. Caro Micox,
    Que tal aperfeiçoar um pouco a função?
    Definir um segundo argumento para a função (por exemplo: freq) determinando a quantidade de números sorteados antes de haver uma repetição (frequencia mínima para repetir). Claro que freq <= size-1.

    ResponderExcluir
  4. Seção Quebra-Galho: Informações e soluções grátis para problemas com chaves e instalação elétrica em www.eletrochave.com.br

    ResponderExcluir
  5. Hi... Looking ways to market your blog? try this: http://bit.ly/instantvisitors

    ResponderExcluir
  6. Amigo, to fazendo um site de anunciantes, e gostaria de saber como faço aleatoriedade de Imagens, sem repeti-las?? Tipo as imagens mudam somente se o usuário entrar ou dar um F5 na página. Obrigado

    ResponderExcluir

Resultado! Concursos