Wikipédia:Esplanada/geral/Gerador de números aleatórios (29ago2011)

Origem: Wikipédia, a enciclopédia livre.

Gerador de números aleatórios (29ago2011)

Estava eu a traduzir a documentação da Predefinição:Rand, quando notei várias coisas estranhas no seu original em inglês. É com horror que eu gostaria de comunicar que este gerador é um lixo. Não sei o que poderia ser feito para melhorá-lo, diante das limitações do nosso MediaWiki, mas, só a título de ilustração, vejam o que acontece se eu tentar simular alguns d6-1: 2, 2, 2, 2, 2, 2, ... ou alguns d8-1: 0, 0, 0, 0, 0, 0, ... Bem pouco aleatório, não é? Albmont (discussão) 13h41min de 29 de agosto de 2011 (UTC)[responder]

Pelo que entendi, esta função é baseada na contagem de segundos, pelo que não é um gerador de números aleatórios de boa qualidade. Mas em que situação você precisa de um gerador melhor? Lechatjaune msg 13h45min de 29 de agosto de 2011 (UTC)[responder]
Complementando, você sempre pode abrir um bug no bugzilla solicitando melhoras na função e esperar que os devs atendam. Não sei se irão atender: por um lado, é muito fácil substituir o algoritmo, por outro lado, não vejo muita necessidade de um bom gerador de números aleatórios. Lechatjaune msg 13h47min de 29 de agosto de 2011 (UTC)[responder]
A questão não é em que situação você precisa de um gerador melhor?, a questão é que o gerador, do jeito que está, e da forma como foi "documentado" no seu original, tem informações falsas. Albmont (discussão) 13h50min de 29 de agosto de 2011 (UTC)[responder]
Qual função do MediaWiki deveria ser melhorada? A predefinição é uma criação das wikis, não faz parte do software, então as eventuais melhorias são de responsabilidade dos próprios editores.
Se a intenção é obter algo como uma "palavra mágica" que gere números aleatórios, acho improvável que o pedido venha a ser atendido, pois tudo que é aleatório "quebra o cache" das páginas, e isso não pode ser quebrado por questão de eficiência. Ver resposta ao pedido que foi feito para adicionar uma extensão para exibir conteúdo aleatório. Helder 15h03min de 29 de agosto de 2011 (UTC)[responder]
O código da Predefinição:Rand é diferente do da en:Template:Random_number, mas o seu exemplo também causa o mesmo problema na Wikipédia inglesa. No entanto, observe que alguns dos números que escolheu não são primos então, a princípio, a predefinição não tinha obrigação de funcionar em tais casos . Helder 15h03min de 29 de agosto de 2011 (UTC)[responder]
{{#expr: ({{#time:U}}*({{{3|67}}})+({{{2|7}}})) mod {{{1|100}}}}}
e se, em vez de multiplicar por seed ({{{3|67}}}), dividíssemos? Ficaria assim:
{{#expr: ((trunc({{#time:U}}/({{{3|1}}}) ) + ({{{2|7}}})) mod {{{1|100}}}}}
para o exemplo dos d6-1:
0, 1, 4, 0, 1, 2, 4, ...
Acho que agora tem mais cara de aleatório, não é? Albmont (discussão) 14h09min de 29 de agosto de 2011 (UTC)[responder]
Talvez seja boa ideia colocar a sugestão na Wikipédia inglesa, pois talvez os criadores da versão de lá tenham outros comentários. Helder 15h03min de 29 de agosto de 2011 (UTC)[responder]
Não sei, acho que aqui tem mais cérebros pensantes e dispostos a resolver as coisas do que lá. Albmont (discussão) 17h01min de 29 de agosto de 2011 (UTC)[responder]
  • A propósito, alguém sabe o porquê tanto delay na hora de gerar um número diferente? Porquê se eu entro na predef e está lá um número, e eu dou F5, continua o mesmo. Agora se vou em editar, "prever edição" e em "prever edição" denovo, o número muda. !Silent (discussão) 22h29min de 29 de agosto de 2011 (UTC)[responder]
O número só muda quando se descarta a cópia da página que fica guardada em cache no servidor (por exemplo, com "action=purge"). Criar conteúdo de forma aleatória vai em uma direção oposta a da melhora no tempo de processamento do código wiki das páginas, pois exige que não sejam guardadas cópias em cache. Segundo o Bryan Tong Minh, isso é inaceitável e por isso a extensão RandomSelection não foi ativada. Helder 00h00min de 30 de agosto de 2011 (UTC)[responder]
Ah, então beleza. Mas eu acharia melhor fazer com js, usando Math.random(), pois um número seria gerado aleatóriamente após carregar a página, mas aí entraria a questão da acessibilidade.
Enfim, Concordo com a sugestão do Albmont. !Silent (discussão) 16h03min de 30 de agosto de 2011 (UTC)[responder]