Re: [pgbr-geral] Probabilidade com random()
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 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()
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 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()
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