Re: [pgbr-geral] Probabilidade com random()

2009-11-25 Por tôpico JotaComm
Olá, Jorge

2009/11/25 Jorge Vilela jorge.com...@gmail.com

 Bom dia pessoal,
 Estou tentando desenvolver uma procedure que busque dados em 3 selects:
 banner_local, banner_estadual e banner_nacional.

 O que estou pensando em fazer é:
 1. Fazer 3 selects, jogar em records
 2. Dar um select nesses records usando join e random(), assim poderia
 agregar os resultados dos 3, embaralhá-los e recuperar somente 10 registros
 (por exemplo).

 Não necessariamente faria 3 selects separados...
 Gostaria de saber de vocês se há alguma forma de definir uma probabilidade
 para o retorno de cada record/select/tabela/dado. Ex: 50% banner_local, 30%
 banner_estadual, 20% banner_nacional...

 Não entendi o que você necessita. Tem como colocar um exemplo?


 Também estou pensando em começar a desenvolver um joguinho e seria muito
 bom se houvesse algo assim já no banco.


 Muito obrigado
 Jorge Vilela

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Probabilidade com random()

2009-11-25 Por tôpico Osvaldo Kussama
2009/11/25 Jorge Vilela jorge.com...@gmail.com:
 Bom dia pessoal,
 Estou tentando desenvolver uma procedure que busque dados em 3 selects:
 banner_local, banner_estadual e banner_nacional.
 O que estou pensando em fazer é:
 1. Fazer 3 selects, jogar em records
 2. Dar um select nesses records usando join e random(), assim poderia
 agregar os resultados dos 3, embaralhá-los e recuperar somente 10 registros
 (por exemplo).
 Não necessariamente faria 3 selects separados...
 Gostaria de saber de vocês se há alguma forma de definir uma probabilidade
 para o retorno de cada record/select/tabela/dado. Ex: 50% banner_local, 30%
 banner_estadual, 20% banner_nacional...


Considerando que a função random() gera valores uniformemente
distribuídos você pode considerar algo do tipo:
- entre 0 e 0,5 -- banner local
- entre 0,5 e 0,8 -- banner estadual
- entre 0,8 e 1 -- banner nacional


 Também estou pensando em começar a desenvolver um joguinho e seria muito bom
 se houvesse algo assim já no banco.


Joguinho em PostgreSQL?
Será que é a ferramenta mais adequada?

Bom, uma solução para Sudoku utilizando SQL você pode encontrar aqui:
http://www.pastie.org/684163
da thread:
http://old.nabble.com/sudoku-in-an-sql-statement-to26142381.html#a26206459

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Probabilidade com random()

2009-11-25 Por tôpico Jorge Vilela
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...


Jorge Vilela


2009/11/25 JotaComm jota.c...@gmail.com

 Olá, Jorge

 2009/11/25 Jorge Vilela jorge.com...@gmail.com

 Bom dia pessoal,
 Estou tentando desenvolver uma procedure que busque dados em 3 selects:
 banner_local, banner_estadual e banner_nacional.

 O que estou pensando em fazer é:
 1. Fazer 3 selects, jogar em records
 2. Dar um select nesses records usando join e random(), assim poderia
 agregar os resultados dos 3, embaralhá-los e recuperar somente 10 registros
 (por exemplo).

 Não necessariamente faria 3 selects separados...
 Gostaria de saber de vocês se há alguma forma de definir uma probabilidade
 para o retorno de cada record/select/tabela/dado. Ex: 50% banner_local, 30%
 banner_estadual, 20% banner_nacional...

 Não entendi o que você necessita. Tem como colocar um exemplo?


 Também estou pensando em começar a desenvolver um joguinho e seria muito
 bom se houvesse algo assim já no banco.


 Muito obrigado
 Jorge Vilela

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Probabilidade com random()

2009-11-25 Por tôpico Osvaldo Kussama
2009/11/25 Jorge Vilela jorge.com...@gmail.com:
 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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Probabilidade com random()

2009-11-25 Por tôpico Jorge Vilela
Haha! Que legal, era isso mesmo. Muito obrigado pessoal =D


Jorge Vilela


2009/11/25 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2009/11/25 Jorge Vilela jorge.com...@gmail.com:
  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
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral