Aleatoriedade

Quer comprar essa camiseta?

Programador: É impressão minha ou você está gerando dois números aleatórios e
depois multiplicando um pelo outro?
Alonso: É isso mesmo…
Programador: E por qual motivo aleatório você está fazendo isso?
Alonso: É porque assim eu aumento a aleatoriedade do número
Esta entrada foi publicada em Tirinhas e marcada com a tag , . Adicione o link permanente aos seus favoritos.

39 respostas a Aleatoriedade

  1. SparK disse:

    pseudo random tem que multiplicar mesmo XD
    mas eu uso o timestamp do unix vezes o random dai fica menos pseudo e mais rand mesmo

    Tweet
    • /dev/urandom disse:

      Agreed.
      eu faço quase isso, uso o timestamp para dar seed no random.
      ou então, cat /dev/urandom :)

      Tweet
    • Paulo Rogério disse:

      O gerador pseudoaleatório te retorna valores que seguem uma amostra com distribuição aproximadamente uniforme. Se você multiplicar dois números pseudoaleatórios, você muda essa distribuição e provavelmente faz algo bem diferente do que queria fazer.

      Tweet
    • biggahed disse:

      Nao nao nao…
      Chance de dar merda é grande.
      Como o Paulo Rogerio falou, se voce alterar os valores retornados pelo gerador de numeros aleatorios, voce pode acabar alterando a distribuiçao, resultando em numeros “menos aleatorios”.
      O que voce disse de pegar um timestamp, um valor fixo, e multiplicar pelo numero aleatorio gerado nao deve causar muito problema, a distribuiçao ficará uniforme. Mas é uma operação desnecessária.
      E aí tem aqueles casos que o pessoal inventa de fazer rand()*rand() ou rand()+rand() ou …
      Isso nao funciona e quebra a distribuiçao.
      Se voce quer melhorar a qualidade dos numeros gerados a melhor chance é mudar de algoritmo mesmo.

      Tweet
  2. Lucas disse:

    Meu irmão já chegou a cogitar usar rand em C em um sistema de previsão do tempo, porque estava dificil obter um número da previsão.

    Tweet
  3. Eu tinha um professor que afirmava que um dos melhores algorítmos para resolução de problemas era o algoritmo “porra louca”.

    Tweet
  4. goncin disse:

    Probabilidade de outra tirinha sair outro dia a essa hora da matina: QUASE ZERO ;)

    Tweet
  5. @danilo62x disse:

    Sera que ele fez aquela procedure que gera um numero quase sequencial? ref. http://migre.me/5tIiY

    Tweet
  6. André disse:

    Esse cara é um gênio!!

    ashduashduas

    Tweet
  7. Henrique disse:

    como eu nunca pensei nisso? =D

    Tweet
  8. Marcelo Diniz disse:

    Pra que facilitar se podemos complicar! (Detalhe, nesse e na maioria dos casos sem necessidade alguma)

    Tweet
  9. Francisco disse:

    Eu ainda prefiro esse método para números aleatórios: http://xkcd.com/221/

    Tweet
  10. @claudiadnh disse:

    function TForm1.RandomMaisRandomMaisRandom: Int64;
    Var
    i : Integer;
    numero : Int64;
    begin
    numero := 1;
    for i := 0 to 10 do
    begin
    Randomize;
    numero := numero * Random(99);
    end;
    result := numero;
    end;

    auhuahuahuahau, não aguentei…

    Tweet
  11. Leandro disse:

    use rand depois gere um md5 filtre para usar só os números da string e multiplique novamente por outra rand.

    Tweet
  12. Forneça dois dados junto com o sistema, tipo banco imobiliário, para o usuário jogar e digitar o número multiplicador.

    Tweet
  13. Vampyryty disse:

    ainda bem que não era 2 numeros convertidos em Md5(md5(sha1))) trasformado em string, retirar as letras, conservando os numeros… fazendo o mod dos dois numeros…

    Tweet
  14. Renato disse:

    E ainda tem gente que acha que programador saber matemática não é importante! :P

    Tweet
  15. Diego Silva disse:

    Pior que eu já fiz isso. E é realmente para aumentar a “aleatoriedade” uma vez que se tratam de números pseudo randômicos.
    Tem como também fazer com Sin() e Cos(), para ficar ainda mais aleatório.

    Tweet
    • Diego Silva disse:

      E complementando:

      Public Function GeraRand(ByVal Level As Byte) As Double
      Dim Resultado As Double
      Dim Multiplier As Double
      Randomize
      Do While Multiplier < Level
      Randomize
      Resultado = Resultado * (Rnd * Sin(Rnd))
      Resultado = Cos(Resultado) / (Rnd * Tan(Rnd + 2))
      Multiplier = Multiplier + 1
      Loop
      GeraRand = Resultado
      End Function

      E por sinal, Level também pode ser um valor obtido de Rnd, para deixá-lo ainda mais aleatório.

      Tweet
    • Wendel disse:

      Aumentar a aleatoriedade ? Multiplicar vai é diminuir, isso sim. O pseudo-random ainda tenta ser uniforme no intervalo [0,1) , mas se você multiplicar dois deles, vai obter uma outra distribuição.

      Tipo, qual a chance do número ser < 1/2 ? No pseudo-random, ainda dá seus 50% aproximados. Na nova distribuição, deve ficar na casa dos 71% (guesstimating)

      Tweet
  16. Douglas Santana disse:

    Taquepareu! a ideia desse cara é muito boa.
    manda ele ir aumentando a complexidade do algorítimo gerando 5 random e fazendo as 4 operações entre eles ai sim vai ficar rox!
    prodígio!

    Tweet
  17. filipe disse:

    eu sou tão ruim de matemática que eu nem entendi a piada, a princípio eu acho que ia funcionar huaehuae…

    Tweet
  18. #FAIL PIADA :D ; Creio que esteja correto a intenção do carinha que ta gerando o random. Existem forma melhores, como gerar um MD5, filtrar apenas os números e depois sim multiplicar, entre outras.. Mas isso já ajuda em “Aumentar a aleatoriedade do número” .

    Tweet
  19. Leila disse:

    Aumentar a aleatoriedade….. A função rand retorna um número entre 0 e 1, multiplicando os dois, o resultado diminui, isso faz com que a distribuição seja alterada. Os números entre 0 e 0,5 tem a probabilidade aumentada e os números entre 0,5 e 1 diminuída. Logo a aleatoriedade diminui e não aumenta.

    Tweet
  20. Renan disse:

    Gerem 2 vetores, cada um com digamos 10 mil números aleatórios, e multipliquem elemento a elemento, depois ordenem e plotem esse vetor resultante.

    Vejam que a distribuição deixou de ser uniforme, pode ser que vocês queiram isso, pode ser que não.

    Tweet

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>