[Resolvido]Problemas com irandom

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido [Resolvido]Problemas com irandom

Mensagem por Lázaro Games em Ter 23 Jul 2013, 12:50

Olá, estou com um problema na função irandom(x)
eu queria criar um ID unico para o jogador, esse ID seria entre 0 e 4294967296 (que é 65536 x 65536), mas toda vez que o ID é gerado seu valor sempre é 0
Tentei dividir o ID em duas partes, cada uma de irandom(65536) e multiplicá-las, mas também sempre dá 0...
Há alguma outra função que possa criar esse ID aleatório? Ou há algum limite para a função irandom(x)?
Aguardo respostas xD

Lázaro Games

Ranking : Nota C
Número de Mensagens : 70
Idade : 18
Data de inscrição : 08/08/2010
Notas recebidas : D-B
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.lzstargames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Problemas com irandom

Mensagem por Brother27 em Ter 23 Jul 2013, 13:06

Bem... Isso não faz sentido pale 
Mas posta o seu código inteiro, talvez o problema não seja esse...

Brother27

Ranking : Nota C
Número de Mensagens : 253
Idade : 17
Data de inscrição : 28/06/2012
Notas recebidas : C
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Problemas com irandom

Mensagem por Lázaro Games em Ter 23 Jul 2013, 13:10

Primeiro eu tentei: global.PID=irandom(4294967296), e sempre dava 0
Depois eu tentei: global.PID=irandom(65535)*irandom(65535), mas também só dava 0

Lázaro Games

Ranking : Nota C
Número de Mensagens : 70
Idade : 18
Data de inscrição : 08/08/2010
Notas recebidas : D-B
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.lzstargames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Problemas com irandom

Mensagem por Zero. em Ter 23 Jul 2013, 13:29

Eu testei irandom(65535)*irandom(65535) e funcionou, mas o irandom tem limite msm. Olha ai o teste : https://www.dropbox.com/s/ese3hykbaek2r9l/teste.gmk

Zero.

Número de Mensagens : 1295
Idade : 20
Data de inscrição : 19/08/2010
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Problemas com irandom

Mensagem por superrafao em Ter 23 Jul 2013, 13:40

Tenta usar isso!
random_range(0,65536)
ele escolhera o numero de 0 a 65536!

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Problemas com irandom

Mensagem por GameMakerTutoriais em Ter 23 Jul 2013, 14:25



Cara, muito estranho isso. Essa vai entrar pra lista de bizarrices que eu já vi no Game Maker, mas eu acho que entendi o que aconteceu. ACHO.

Se a gente levar ao pé da letra o que o manual diz sobre "random integer number", a gente poderia *supor* que essa função (irandom) esperasse um valor que coubesse no limite de uma variável integer, o que poderia ser 2 ou 4 bytes (o que também é muita sacanagem o manual não avisar, já que o GM trata o valor de uma forma, mas a função, de outra).

O que rolou foi o seguinte. O valor de 4294967296 (que na verdade deveria ser 4294967295) cabe no limite de um valor double que o Game Maker aloca pra qualquer variável, mas quando a função pega esse valor, ela enxerga isso como um longint e isso pode ser comprovado quando você usa 4294967294, porque a função vai poder retornar um valor negativo (de -2147483648 a 2147483647).

É aí que fica explícita a bagunça que o GM faz com os dois tipos, double e longint (aparentemente, só nessa função). Se você usar 4294967296 ou 4294967295, é entendível que ele retorne 0, porque no longint, como qualquer variável que abrange um range negativo, há dois zeros, um zero negativo (4294967295, o máximo) e um positivo (4294967296, que excede o limite e volta a ser 0). Então, a função vê isso como 0 e obviamente só pode retornar zero.

O jeito aí é apelar pra outra solução. O irandom_range, como os amigos sugeriram aí, é uma boa saída.


----- Edit -----

Eu sei que é exagero, mas apesar da possibilidade ser pequena, usando um número aleatório você pode gerar dois ids iguais. Se você preferir, pode gerar um ID através do IP:

http://gmbr.forumeiros.com/t27333-script-gerar-um-id-de-jogador#202577

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Problemas com irandom

Mensagem por Lázaro Games em Ter 23 Jul 2013, 17:42

Muito obrigado a todos!
Tópico resolvido!



Como o tópico ja foi resolvido, ele sera trancado.
Caso o autor deseje inserir mais alguma informação, contacte um moderador.
Att: CRP-Max.

Lázaro Games

Ranking : Nota C
Número de Mensagens : 70
Idade : 18
Data de inscrição : 08/08/2010
Notas recebidas : D-B
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.lzstargames.blogspot.com

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Problemas com irandom

Mensagem por Conteúdo patrocinado Hoje à(s) 04:03


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum