GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


Random 5 veses sem repetir o mesmo valor

+8
pedrosorio
Volstagg
rodrigo1434
Froidz
vinians
RKNF1995
Gusba
Janx
12 participantes

Página 2 de 2 Anterior  1, 2

Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por Volstagg Ter 07 Out 2008, 18:33

Desculpa a "newbice" mas o que é mod?
Volstagg
Volstagg

Data de inscrição : 16/05/2008
Reputação : 0
Número de Mensagens : 353
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por vinians Ter 07 Out 2008, 18:52

dani escreveu:
@topic
não sei se o código do vinians explica isso, como não entendi vou perguntar... como que funciona exatamente esse randomize()? pois 1.2 é diferente de 1.3, mas como querem um inteiro vai ficar 1.. então se repetirá.
Dani, la no início do tópico eu dei uma explicada +- sobre isso, da uma olhada la, qualquer coisa me manda pm que te explico melhor.

pedrosorio escreveu:
Portanto, dani, você acredita sinceramente que um código que usa strings para gerar números aleatórios é um código conciso e correcto. Mas não se dá sequer ao trabalho de analisar um algoritmo simples para gerar números aleatórios não repetidos?
Amigo, não sei oque vc tem contra as strings :rooll: o GM possui grande facilidade de manipulação de strings, use-as!!! Alias sendo esse código utilizado no evento CREATE não causará problemas de velocidade. Lembre-se código bom é aquele que resolve o problema proposto ;)

Vitinho0 escreveu:
Desculpa a "newbice" mas o que é mod?
Amigo, o operador mod retorna o resto da divião.
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por pedrosorio Ter 07 Out 2008, 19:04

Eu não tenho absolutamente nada contra strings. Pura e simplesmente são um tipo de dados que nada tem que ver com a geração de números aleatórios e não faz qualquer sentido usá-las aqui.
pedrosorio
pedrosorio

Data de inscrição : 15/06/2008
Reputação : 0
Número de Mensagens : 50
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://pedrosorio.nfshost.com

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por vinians Ter 07 Out 2008, 20:10

pedrosorio escreveu:Eu não tenho absolutamente nada contra strings. Pura e simplesmente são um tipo de dados que nada tem que ver com a geração de números aleatórios e não faz qualquer sentido usá-las aqui.
Amigo, não esta especificado que um tipo ou outro de dado deve ser usado pra resolver esse ou aquele problema, certo? Srtrings guardam uma sequencia de caracteres que vc pode usar pra qualquer coisa, desde que resolva o seu problema. As próprias variaveis numéricas podem guardar códigos de caracteres que podem ser utilizados pra se converter numa... voila!! sequencia de caracteres!!, ou seja um string ;) Bem de qualquer modo creio que fica a cargo de cada um usar esse ou aquele tipo de dados, afinal é pra isso que eles servem, devem ser combinados pra se criar algum tipo de solução ;)
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por pedrosorio Ter 07 Out 2008, 21:01

Então eu vou fazer uma análise mais detalhada:

1) O porquê de não usar strings - strings são por definição um tipo de dados que consiste numa sequência de caracteres, geralmente utilizada para guardar informação de tipo textual, como nomes, etc. Nada nos impede de usar strings mas para quê usar funções "complicadas" quando o tipo natural de dados para o que você quer é o vector (saber se o número x já saiu ou não).

2) Você poderia argumentar que você tem um while no qual é feita a verificação imediata para saber se saíram todos os números (ss<>"AAAAA") e tal seria impossível de fazer com um vector. Você está correcto. O problema é que você apenas tem que fazer essa verificação porque a estrutura do programa não é a correcta. Nesse momento você gera 5 números aleatórios e vai ver se saíram todos diferentes. Em "boa programação" deveria verificar a cada "extracção" se o número já saiu e nesse caso repetir. Porquê? Porque em 5 números não faz diferença, mas para conjuntos maiores, o seu método ineficiente não pode ser utilizado. Como pode ver, ao verificar se o número já saiu a cada extracção já não é necessário verificar todos os números ao mesmo tempo, e um vector passa a ser a escolha natural.

3) ceil(random(5))
random(x) Returns a random real number between 0 and x. The number is always smaller than x.
Significa isto que, aplicando a função ceil a random(5) vamos obter um número entre 0 e 5. Sempre que quiser obter um número entre 1 e n faça 1+floor(random(n)).
pedrosorio
pedrosorio

Data de inscrição : 15/06/2008
Reputação : 0
Número de Mensagens : 50
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://pedrosorio.nfshost.com

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por rodrigo1434 Ter 07 Out 2008, 21:55

Viu meu post !!!
crie um objeto criador dessas ''bolas'' //exemplo



var a;
a=0
repeat(5){
bola=instance_create(random(room_width),random(room_height),obj_bola)
with(bola) valordabola=a
a+=1}
rodrigo1434
rodrigo1434

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 25/04/2008
Reputação : 5
Número de Mensagens : 324
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://brasilgame.forumbrasil.net

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por vinians Ter 07 Out 2008, 22:50

pedrosorio escreveu:Então eu vou fazer uma análise mais detalhada:

1) O porquê de não usar strings - strings são por definição um tipo de dados que consiste numa sequência de caracteres, geralmente utilizada para guardar informação de tipo textual, como nomes, etc. Nada nos impede de usar strings mas para quê usar funções "complicadas" quando o tipo natural de dados para o que você quer é o vector (saber se o número x já saiu ou não).

2) Você poderia argumentar que você tem um while no qual é feita a verificação imediata para saber se saíram todos os números (ss<>"AAAAA") e tal seria impossível de fazer com um vector. Você está correcto. O problema é que você apenas tem que fazer essa verificação porque a estrutura do programa não é a correcta. Nesse momento você gera 5 números aleatórios e vai ver se saíram todos diferentes. Em "boa programação" deveria verificar a cada "extracção" se o número já saiu e nesse caso repetir. Porquê? Porque em 5 números não faz diferença, mas para conjuntos maiores, o seu método ineficiente não pode ser utilizado. Como pode ver, ao verificar se o número já saiu a cada extracção já não é necessário verificar todos os números ao mesmo tempo, e um vector passa
a ser a escolha natural.

Bem, quanto estou jogando um jogo num deixo de usar ele porque o programador usou 'strings' no lugar de 'inteiros', pense nisso ;)


pedrosorio escreveu:
3) ceil(random(5))
random(x) Returns a random real number between 0 and x. The number is always smaller than x.
Significa isto que, aplicando a função ceil a random(5) vamos obter um número entre 0 e 5. Sempre que quiser obter um número entre 1 e n faça 1+floor(random(n)).
É vero!!! ;)

Concordo com seu argumento e acho que vc deve ser um bom programador!! Só acho que não devemos olhar um problema por apenas um angulo, ou achar que só uma solução é correta!! Mais se eu tivesse algum projeto de game iria gostar de te-lo como colaborador! Abraços, Vinians
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por pedrosorio Qua 08 Out 2008, 08:37

Eu admito que fui um pouco agressivo demais nesse tópico. Vinians, concordo plenamente que a sua solução funciona perfeitamente, assim como muitas outras, e é óbvio que desde que a experiência de jogo seja satisfatória, ninguém vai deixar de jogar porque o programador escolheu fazer desta ou daquela maneira.

Peço desculpa por me ter exaltado, a verdade é que encarei este tópico como uma dúvida de programação e queria dar uma solução que do ponto de vista da programação fosse mais "limpa" digamos assim e também explicar o porquê desse tipo de solução.

Acho que a sua forma de resolver o problema é sem dúvida imaginativa mas numa situação complexa em que o desempenho é fundamental (e isso no game maker acontece por vezes) é bom saber o que devemos usar para resolver um problema da forma mais eficaz.

Na realidade, o grande problema para mim foi ver que o seu código faz o equivalente a pegar em 5 bolas, atirá-las para um campo com 5 buracos, e esperar que todas caiam em 5 buracos diferentes, e quando não o fazem repetir. Para 5, e com a velocidade dos computadores actuais é razoável (a probabilidade de sair certo a cada vez é 5!/5^5 = 0.04). Mas tente aumentar esse número para 15. Qual a probabilidade de as 15 bolas caírem todas em buracos diferentes? Muitíssimo menor, (15!/15^5 = 0.000003) teste o seu código com 15 algumas vezes. O pior disso é mesmo que no pior caso, elas podem NUNCA cair e a probabilidade de não caírem cresce exponencialmente com o número de bolas. Na verdade para um valor tipo 30 números aleatórios, você tem que esperar muito tempo (a probabilidade de caírem as 30 bolas em 30 buracos diferentes é de 30! / 30^30 aproximadamente 0.000000000001 ou seja, você tem que fazer em média 1000000000000 ciclos, se tiver sorte podem ser 10000 - extremamente rápido, se tiver azar, o programa bloqueia).

Mais uma vez queria pedir desculpa por alguma agressividade, a imaginação também é algo fundamental para resolver os problemas em programação. Não é pelo facto de você usar strings que vão surgir problemas neste caso, mas espero que tenha percebido as falhas no algoritmo.

Se tiver alguma questão sobre o seu ou o meu código, ou sugestões para melhorar o meu, diga vinians. Abraço
pedrosorio
pedrosorio

Data de inscrição : 15/06/2008
Reputação : 0
Número de Mensagens : 50
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://pedrosorio.nfshost.com

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por Jiraiya_lo Sex 08 maio 2009, 11:24

E se eu quizesse fazer 5 sprites aparecerem randomicamente?
Jiraiya_lo
Jiraiya_lo

Data de inscrição : 08/05/2009
Reputação : 0
Número de Mensagens : 1
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por Igor KinGamer Sex 08 maio 2009, 13:40

Não faça perguntas nos tópicos dos outros (ainda mais assim revivendo, olhe a data do último post antes do seu), crie um tópico perguntando isso e seja bem específico sobre o que você quer ;)
Igor KinGamer
Igor KinGamer

Data de inscrição : 26/09/2008
Reputação : 11
Número de Mensagens : 890
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por Borgo Sex 08 maio 2009, 16:34

EDIT: agora que eu vi que este post é antigo e tem 3 páginas hehehe, mas em todo caso, se alguém ainda precisar do script que gera numeros aleatórios sem se repetir hehehehe


Borgo is back huHAuhAu

Mude apenas o qt_nrs para a quantidade desejada e vualá!!!
será retornado um array chamado numero[] que armazena estes numeros aleatórios sem repetições.
inicia pelo 1...
numero[1]
numero[2]
numero[3]
até o número informado Smile

Código:


qt_nrs=10 //altere para quantos números precisa
for (i=1;i<=qt_nrs;i+=1){
numero[i]=0 //inicia o array
}
for (i=1;i<=qt_nrs;i+=1){
    while (numero[i]=0){
          numero[i]=round(random(qt_nrs-1)+1)
          for (j=1;j<i;j+=1){
              if numero[i]=numero[j]
              numero[i]=0
          }   
    }
}
Borgo
Borgo

Data de inscrição : 06/01/2009
Reputação : 0
Número de Mensagens : 69
Prêmios : Random 5 veses sem repetir o mesmo valor - Página 2 Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.neonerds.com.br

Ir para o topo Ir para baixo

Random 5 veses sem repetir o mesmo valor - Página 2 Empty Re: Random 5 veses sem repetir o mesmo valor

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Página 2 de 2 Anterior  1, 2

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos