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











































































































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
Agreed.
eu faço quase isso, uso o timestamp para dar seed no random.
ou então, cat /dev/urandom
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.
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.
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.
Eu tinha um professor que afirmava que um dos melhores algorÃtmos para resolução de problemas era o algoritmo “porra louca”.
Tbm já ouvi isso, e apoio a decisão kkkkkkkk
Probabilidade de outra tirinha sair outro dia a essa hora da matina: QUASE ZERO
Probabilidade de você não ter percebido várias tirinhas saindo cedo: 99%
Probabilidade de você estar certo ou eu estar errado: 100% (lembre-se de que o operador OR retorna TRUE quando QUALQUER proposição for verdadeira)
le Counter =p
[Postagem programada] ahusdhasuahs
Sera que ele fez aquela procedure que gera um numero quase sequencial? ref. http://migre.me/5tIiY
Esse cara é um gênio!!
ashduashduas
Realmente um prodÃgio!!
Uma dádiva dos ninjas kkkkkkkkkk
como eu nunca pensei nisso? =D
Pra que facilitar se podemos complicar! (Detalhe, nesse e na maioria dos casos sem necessidade alguma)
Eu ainda prefiro esse método para números aleatórios: http://xkcd.com/221/
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…
Delphi?
Bitch, please.
Ideias brilhantes codificadas em Delphi +D
o que deve aparecer de zeros nessa sequência de números aleatórios, não é brincadeira.
Delphi? Aham, senta lá Claudia!!
use rand depois gere um md5 filtre para usar só os números da string e multiplique novamente por outra rand.
…até um dia chegar o incrÃvel caso em que o md5 dê só dÃgitos hexa e a multiplicação não tratada de branco pelo inteiro rand dê um resultado inesperado dependendo da linguagem.
Forneça dois dados junto com o sistema, tipo banco imobiliário, para o usuário jogar e digitar o número multiplicador.
Por mais estranho que pareça esse método gera de fato um número realmente aleatório. ( aleatório != pseudo-aleatório)
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…
E ainda tem gente que acha que programador saber matemática não é importante!
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.
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.
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)
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!
eu sou tão ruim de matemática que eu nem entendi a piada, a princÃpio eu acho que ia funcionar huaehuae…
:S
#FAIL PIADA
; 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” .
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.
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.