Números aleatoriamente

eu só queria er ao resultado... passo a explicar... Eu tenho um fórum, e estou a fazer uma "lotaria" e para ser completamente justo, queria que os numeros fossem completamente aleatorios...
 
Script em que linguagem? php? javascript(impossivel se for o cliente a correr)? asp?

porque é que dizes que é impossivel se for o cliente a correr??

em javascript tens a função Math.Random()

em PHP tens a função rand()

no caso do PHP podes opcionamente usar parametros na função, tipo:
rand(10, 20) gera um aleatório entre 10 e 20
 
porque é que dizes que é impossivel se for o cliente a correr??

em javascript tens a função Math.Random()

Não é impossivel por impossibilidade técnica pq tens funcões para o fazer, mas um sorteio tem que ser feito com linguagem de servidor para ser vinculativo.

O Math.Random() de javascript não te proporciona o número igual em todos os browsers e perde o proposito da existencia da função para uma lotaria. Nunca poderá correr no lado do cliente... :)
 
Olá.

Só para chamar a atenção que os números gerados por essas funções, a não ser que tenhas hardware especializado no servidor, não são verdadeiramente aleatórios; são pseudo-aleatórios. Isto pode, ou não, importar para o que pretendes fazer.

De qualquer maneira, mesmo que não necessites de números verdadeiramente aleatórios, tem especial atenção com o gerador (de números pseudo-aleatórios) que vais utilizar.

Cumps,
JP
 
Olá.

Só para chamar a atenção que os números gerados por essas funções, a não ser que tenhas hardware especializado no servidor, não são verdadeiramente aleatórios; são pseudo-aleatórios. Isto pode, ou não, importar para o que pretendes fazer.

De qualquer maneira, mesmo que não necessites de números verdadeiramente aleatórios, tem especial atenção com o gerador (de números pseudo-aleatórios) que vais utilizar.

Cumps,
JP

Tão bonito de se ler, mas no entanto pseudo-aleatórios.. não vejo uma única razão de não se poderem usar, acho que toda a gente sabe isso, mas..

De qualquer maneira, podem criar complementos para as vossas funções próprias de random, e usar o time actual para passarem a ser algo mais que pseudos.
 
Olá hostmake!

Tão bonito de se ler, mas no entanto pseudo-aleatórios.. não vejo uma única razão de não se poderem usar, acho que toda a gente sabe isso, mas..
Volto a reforçar o que tinha dito: depende do propósito da utilização. Números pseudo-aleatórios são utilizados em "todo o lado" (e.g. criptografia), mas isso não implica que não existam geradores mais seguros que outros - era para isso que queria chamar a atenção.

A escolha de um gerador seguro pode ser (ou não, lá está - depende do propósito) fundamental. Um exemplo "famoso" foi a falha de segurança grave no Kerberos IV (é uma apresentação de doze slides muito interessante), tirando um excerto de um dos sides:
What Went Wrong?

  1. Underestimated the challenges of RNGs.
  2. The repaired RNG never got called.
  3. Code review failed to detect that the old RNG was still in use.
De qualquer maneira, podem criar complementos para as vossas funções próprias de random, e usar o time actual para passarem a ser algo mais que pseudos.

Permite-me discordar, mas utilizar o tempo como fonte de entropia é muito má ideia:
A stunning example of a poorly chosen seed for a random number generator appeared on the front page of the New York Times [14] in September 1995. The problem was in Netscape Navigator, a popular program for browsing the World Wide Web. Instead of using truly random information for seeding the random number generator, Netscape's programmers used a combination of the current time of day, the PID of the running Netscape program, and the Parent Process ID (PPID). Researchers at the University of California at Berkeley discovered that they could, through a process of trial and error, discover the numbers that any copy of Netscape was using and crack the encrypted messages with relative ease.
Mais uma vez, não quero passar a ideia que estou a mandar flames ou parecido. Simplesmente acho que, se o objectivo é: "...fazer uma "lotaria" e para ser completamente justo, queria que os numeros fossem completamente aleatórios...", é preciso estar consciente dos desafios que existem numa tarefa deste género!

Cumps,
JP
 
Não é impossivel por impossibilidade técnica pq tens funcões para o fazer, mas um sorteio tem que ser feito com linguagem de servidor para ser vinculativo.

O Math.Random() de javascript não te proporciona o número igual em todos os browsers e perde o proposito da existencia da função para uma lotaria. Nunca poderá correr no lado do cliente... :)

Hmm, isso depende do objectivo dos números aleatórios. A função que referiste pode ser utilizada para gerar uma chave aleatória para um jogo de sorte, por exemplo.
 
countzero, também não estou a tentar abrir flames, tou na paz ;)

mas, esses exemplo que deste não tem nada a ver com o exemplo do time do PHP, a não ser que consigas aldrabar o servidor que está a correr server-side PHP.

anyway, os exemplos onde não seria apropriado fiarmo-nos em pseudo-números de certeza que não tem nada a ver com este tópico, mas obrigado pelo input para quem não sabia é claro :D
 
Olá! Fiquei com algumas questões depois do teu último post.

countzero, também não estou a tentar abrir flames, tou na paz ;)

mas, esses exemplo que deste não tem nada a ver com o exemplo do time do PHP, a não ser que consigas aldrabar o servidor que está a correr server-side PHP.

Como assim? O ataque consiste em prever qual o tempo do servidor, o que é mais ou menos trivial. O ataque é tornado ainda mais simples se tivermos em conta que, muito provavelmente, o servidor utiliza NTP e está sincronizado com uma fonte temporal na Internet.

hostmake disse:
anyway, os exemplos onde não seria apropriado fiarmo-nos em pseudo-números de certeza que não tem nada a ver com este tópico, mas obrigado pelo input para quem não sabia é claro :D
Não têm a ver? :| Importas-te de explicar um bocado melhor?

Desde já, o meu obrigado.

Cumps,
JP
 
Hmm, isso depende do objectivo dos números aleatórios. A função que referiste pode ser utilizada para gerar uma chave aleatória para um jogo de sorte, por exemplo.

Hmm, certo.
Mas vamos imaginar por base o site do euromilhões. O que dizes será válido para o utilizador fazer uma chave aleatória para ele, para jogar, ou mesmo várias se desejar. Mas, imaginando que o sorteio do €Milhões era feito por computador, a função de geração aleatória teria de estar no servidor como é óbvio.

Como o que me pareceu que o dkueti queria fazer era apenas a parte do resultado por isso é que disse que nunca poderia correr do lado do cliente. :)
 
Sim, em principio deve usar NTP, e tens razão mas, é claro que é preciso algo mais na função de maneira a que torne o número o mais "aleatório" e difícil de prever possível.

mas é claro que vamos estar sempre a falar de algoritmos a não ser que haja um input exterior que seja derivante de um acontecimento físico e já por si impossível de prever.

E quanto ao dizer que não é importante, é porque duvido que neste caso ele precise desses cuidados, e como tall, já estamos a sair do on-topic
 
Hmm, certo.
Mas vamos imaginar por base o site do euromilhões. O que dizes será válido para o utilizador fazer uma chave aleatória para ele, para jogar, ou mesmo várias se desejar. Mas, imaginando que o sorteio do €Milhões era feito por computador, a função de geração aleatória teria de estar no servidor como é óbvio.

Como o que me pareceu que o dkueti queria fazer era apenas a parte do resultado por isso é que disse que nunca poderia correr do lado do cliente. :)


Sim, claro.

De qualquer maneira penso que o que ele queria era simplesmente obter um resultado para depois processar manualmente, sendo que o site escolhido (http://www.random.org/integers/) parece-me adequado, para além de ter também outros geradores interessantes.
 
Olá.

Sim, em principio deve usar NTP, e tens razão mas, é claro que é preciso algo mais na função de maneira a que torne o número o mais "aleatório" e difícil de prever possível.

mas é claro que vamos estar sempre a falar de algoritmos a não ser que haja um input exterior que seja derivante de um acontecimento físico e já por si impossível de prever.

E quanto ao dizer que não é importante, é porque duvido que neste caso ele precise desses cuidados, e como tall, já estamos a sair do on-topic

Ok, nesse aspecto temos opiniões diferentes, mas compreendo e respeito e teu ponto de vista!

O dkueti, para resolver o problema dele, encontrou um site que gera números verdadeiramente aleatórios, o que é bastante interessante (às vezes o /dev/random esgota-se muito rapidamente). Já agora, obrigado pelo link dkueti!

Cumps,
JP

P.S.-Não querendo ser considerado um "maluquinho da segurança", aconselho vivamente, a quem estiver a pensar em utilizar aquele site para alguma "coisa importante", a utilizar pelo menos SSL na ligação (i.e. https://www.random.org) - já que um man-in-the-middle destruiria por completo o propósito do site.
 
Última edição:
Back
Topo