Haha! Que legal, era isso mesmo. Muito obrigado pessoal =D

Jorge Vilela


2009/11/25 Osvaldo Kussama <[email protected]>

> 2009/11/25 Jorge Vilela <[email protected]>:
> > Vou tentar exemplificar com o joguinho.
> > Quando o jogador bate a cabeça (Estilo mario) em um quadrado especial,
> > existe a possibilidade de ganhar o cogumelo, a pena, o foguinho etc...
> > Ao fazer um "select poder from poder_especial order by random() limit 1",
> > todos os itens tem a mesma possibilidade de serem escolhidos, certo?
> >
> > E se eu tivesse, por exemplo, um campo que pudesse determinar a
> > probabilidade? Por exemplo: Cogumelo tem 50% (0.5) de chances de
> aparecer,
> > Pena tem 30% (0.3), Foguinho tem 20% (0.2). Eu poderia utilizar esse
> campo
> > como base para o random()?
> > Eu não quero forçar nenhum dos resultados, somente precisava "pender"
> mais
> > para um ou para outro...
> >
>
>
> Como disse na mensagem anterior a função random() é uniformemente
> distribuida então verifique se o que necessita é algo do tipo:
>
> bdteste=# SELECT rnd, CASE WHEN rnd <= 0.5 THEN 'Cogumelo' WHEN rnd >
> 0.5 AND rnd <= 0.8 THEN 'Pena' Else 'Foguinho' END FROM (SELECT
> random() AS rnd) foo;
>        rnd         |   case
> --------------------+----------
>  0.0976872597821057 | Cogumelo
> (1 registro)
>
> isto é, cada vez que você executar este SELECT você terá 50% de
> probabilidade do resultado ser "Cogumelo", 30% de ser "Pena" e 20% de
> ser "Foguinho".
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a