Numeros aleatorios sem Random

11 respostas
L

Boa noite!
alguém sabe se existe alguma maneira de gerar números aleatórios sem a classe Random?

11 Respostas

pmlm

http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#random()

ViniGodoy

Existem vários algorítmos para isso. O Java usa o Linear Congruential (mesmo o math.random() usa a classe Random por baixo dos panos).

Outro algorítmo possível é o multiply with carry.

Veja um exemplo de uma implementação sofisticada dele em Java:
http://www.javaprogrammingforums.com/blogs/helloworld922/11-complimentary-multiply-carry-better-way-generate-pseudo-random-numbers.html

A

Mas por que você não quer usar Random ?

MartinsAndreDablio

acho muito completo o random, para que tentar fazer de outra forma…

L

estou começando a aprender java e gostaria de saber outras formas, até encontrei algumas, mas elas apenas mostram sequencias e não números realmente aleatórios.

ViniGodoy

Por que outros algoritmos podem priorizar outros aspectos como os numeros serem criptograficamente fortes, serem mais rápidos de serem gerados, consumir menos memória ou terem sequencias mais longas sem repetição.

Numeros aleatórios tem muitos usos: em games, estatística, segurança, etc. Por isso é bom ter algoritmos variados.

ViniGodoy

Por que isso não é facil de se obter sem hardwares especiais. Em software o maximo que vc terá é a pseudo-aleatoriedade, dada a natureza deterministica dos algoritmos.

Matheus_terra

Por que isso não é facil de se obter sem hardwares especiais. Em software o maximo que vc terá é a pseudo-aleatoriedade, dada a natureza deterministica dos algoritmos.

Vini, eu acho que você está usando termos técnicos demais para uma pessoa que está tendo seus primeiros contatos com o Java e quem sabe até com programação. Acho que assim você está confundindo mais ele do que ajudando.

E

Mesmo o uso de hardwares especiais não exclui o uso dessas sequências pseudo-aleatórias.
Tipicamente, a geração de números aleatórios com esses hardwares é lenta e gera números que não estão uniformemente distribuídos.
O que se faz é pegar uma sequência desses números que são “aleatórios de verdade” e então usá-la para alimentar o gerador de números pseudo-aleatórios, que tem propriedades estatísticas melhores (por exemplo, têm distribuição uniforme etc.). O nome técnico disso é “geração de entropia”.

ViniGodoy

Estava escrevendo do celular. Aí tive que ser sucinto. Realmente, a frase ficou um pouco técnica demais.

Mas o recado era somente que, como diria padre Quevedo: Números aleatórios reais? “isso non-ecziste.”.

Matheus_terra

Estava escrevendo do celular. Aí tive que ser sucinto. Realmente, a frase ficou um pouco técnica demais.

Mas o recado era somente que, como diria padre Quevedo: Números aleatórios reais? “isso non-ecziste.”.

HEHE. realmente :smiley:

Criado 11 de abril de 2013
Ultima resposta 12 de abr. de 2013
Respostas 11
Participantes 7