Conectar-se
Quem está conectado
23 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 23 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 24/05/2008
Número de Mensagens : 2417
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   : 0
   : 2
   : 0
Ver perfil do usuário

Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 15:48
è o seguinte:
tenho 5 objetos, dai eu quero que cada um ganhe um numero aleatorio de 0 a 4.
cada numero desses corresponde a um outro valor... para outra coisa
mas como eu fasso para fazer esses randoms sem repetir o valor???
avatar
Data de inscrição : 03/08/2008
Número de Mensagens : 1156
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 1
   :
   :
Ver perfil do usuáriohttp://www.ciganospictures.hd1.com.br

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 17:31
explique melhor
avatar
Data de inscrição : 19/07/2008
Número de Mensagens : 1257
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 6

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://www.rknf1995.blogspot.com

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 17:38
acho que ele quer que apareça 5 numeros aleatorias mas que nao se repitam
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 18:14
Coloque no evento CREATE em um objeto de inicializacao:
Código:

randomize();
depois no evento CREATE de cada objeto:
Código:

numero = ceil(random(5));
avatar
Data de inscrição : 24/05/2008
Número de Mensagens : 2417
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   : 0
   : 2
   : 0
Ver perfil do usuário

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 18:52
noossa explica porfavor?? O_O!"
avatar
Data de inscrição : 03/08/2008
Número de Mensagens : 1156
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 1
   :
   :
Ver perfil do usuáriohttp://www.ciganospictures.hd1.com.br

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 18:54
q codigo é esse, explica ae!
avatar
Data de inscrição : 03/08/2008
Número de Mensagens : 1053
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 4

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 19:29
será que criando 5 alarms resolveria o problema?
Soh uma sugestão ^^
avatar
Data de inscrição : 24/05/2008
Número de Mensagens : 2417
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   : 0
   : 2
   : 0
Ver perfil do usuário

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 19:37
Claudio Bruno escreveu:será que criando 5 alarms resolveria o problema?
Soh uma sugestão ^^
Nao O.o
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 19:46
Randomize() - Faz com que ao executar o seu jogo os números aleatórios gerados sejam sempre diferentes. Ele embaralha o gerador de números aleatórios. Assim quando voce usar a função random() ela vai funcionar melhor como se fosse um veradadeiro dado eletrônico. Você precisar executar a função randomize() ao menos uma vez em seus jogos se for utilizar números aleatórios. A função ceil() serve arredondar um número tipo 4.2 para o maior inteiro mais próximo do número. Você pode usar o floor() que faz o arredondamento para baixo. Tipo 4.2 vira 4. Usando o ceil() 4.2 vira 5. Então random(5) de 0 a 4.999 por isso uso o ceil(). Flw
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 25/04/2008
Número de Mensagens : 318
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://brasilgame.forumbrasil.net

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 20:13
var=floor(random(4))
tenta esse

ou cria um objeto que ira criar esse objetos

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


Última edição por rodrigo1434 em Dom 05 Out 2008, 20:21, editado 1 vez(es)
avatar
Data de inscrição : 24/05/2008
Número de Mensagens : 2417
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   : 0
   : 2
   : 0
Ver perfil do usuário

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 20:16
@rodrigo1434 escreveu:var=floor(random(4))
tenta esse

isso pode dar o mesmo numero mais de uma vez.

Vunians:
Cara, mas dai se um valor é 'escolhido', esse valor nao vai ser mais escolhido dinovo ateh eu recomeçar o jogo?? digamos... que caiu 8
dai nunca mais pode cair 8 ateh eu fexa o jogo e abrir dinovo??
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 25/04/2008
Número de Mensagens : 318
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuáriohttp://brasilgame.forumbrasil.net

Re: Random 5 veses sem repetir o mesmo valor

em Dom 05 Out 2008, 20:24
atualizei o post veja dinovo
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Random 5 veses sem repetir o mesmo valor

em Seg 06 Out 2008, 03:06
Na verdade o randomize() faz com que a aleatorização seja mais real. Se vc quizer garantir que nao dê igual armazene os numeros em um vetor.
No evento CREATE de um objeto coloque este código e execute pra vc como funciona:
Código:

r[1] = 0; r[2] = 0; r[3] = 0; r[4] = 0; r[5] = 0;
randomize(); //prepara gerador aleatorio
ss = " ";
while (ss <> "AAAAA")
{
  c  = 0;
  ss = "*****";
  repeat (5)
  {
      c += 1;
      r[c] = ceil(random(5));  //gera numero aleatório no vetor r
      //coloca uma letra 'A' pra marcar a posição
      s1 = string_copy(ss, 1,  r[c] - 1);
      s2 = string_copy(ss, r[c] + 1, string_length(ss) - r[c]);
      ss = s1 + 'A' + s2;
  }
}
c = 1; repeat(5) {r[c] = r[c] - 1; c += 1;}; //valores de 0 a 4 em r
//Depois que vc testar pode remover daqui pra baixo (é so pra mostrar como ficou)
c = 1; str = "-";
repeat(5) {str = str + string(r[c]) + "-"; c += 1; }
show_message('Numeros Gerados: ' + str);
Este é um código de exemplo que gera 5 numeros aleatórios diferentes entre si. Os numeros estão armazenados no vetor r[], dai agora é só vc pegar o valor r[1], r[2] etc e colocar numa variável nos seus 5 objetos. flw
*obs: código testado na versão 7 do GM[u]
avatar
Data de inscrição : 16/05/2008
Número de Mensagens : 353
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Random 5 veses sem repetir o mesmo valor

em Seg 06 Out 2008, 10:55
Que "codigozão" heim! Shocked
avatar
Data de inscrição : 03/08/2008
Número de Mensagens : 1156
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 1
   :
   :
Ver perfil do usuáriohttp://www.ciganospictures.hd1.com.br

Re: Random 5 veses sem repetir o mesmo valor

em Seg 06 Out 2008, 13:13
muito bem pensado esse seu codigo vinians
avatar
Data de inscrição : 15/06/2008
Número de Mensagens : 50
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuáriohttp://pedrosorio.nfshost.com

Re: Random 5 veses sem repetir o mesmo valor

em Seg 06 Out 2008, 18:13
Demasiado complicado esse código, e não faz sentido usar strings.

Código:

r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
  n=floor(random(200))+1;
  nn=0;
  while(n>0) {
    while(r[nn]!=0)
      nn=(nn+1) mod 5;
    n-=1;
  }
  r[nn]=a+1;
}
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: Random 5 veses sem repetir o mesmo valor

em Seg 06 Out 2008, 19:41
@pedrosorio escreveu:Demasiado complicado esse código, e não faz sentido usar strings.

Código:

r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
  n=floor(random(200))+1;
  nn=0;
  while(n>0) {
    while(r[nn]!=0)
      nn=(nn+1) mod 5;
    n-=1;
  }
  r[nn]=a+1;
}
Sério? bem eu testei o seu código e ele não esta funcionando sempre retorna a mesma sequencia 1-2-3-4-5...
avatar
Data de inscrição : 15/06/2008
Número de Mensagens : 50
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuáriohttp://pedrosorio.nfshost.com

Re: Random 5 veses sem repetir o mesmo valor

em Ter 07 Out 2008, 03:49
LOL

É o que dá escrever código às tantas da noite sem testar, evidentemente faltava uma linha fundamental:

Código:

r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
  n=floor(random(200))+1;
  nn=0;
  while(n>0) {
    nn=(nn+1) mod 5;
    while(r[nn]!=0)
      nn=(nn+1) mod 5;
    n-=1;
  }
  r[nn]=a+1;
}
avatar
Data de inscrição : 03/10/2008
Número de Mensagens : 30
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Random 5 veses sem repetir o mesmo valor

em Ter 07 Out 2008, 08:23
@pedrosorio escreveu:LOL

É o que dá escrever código às tantas da noite sem testar, evidentemente faltava uma linha fundamental:

Código:

r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
  n=floor(random(200))+1;
  nn=0;
  while(n>0) {
    nn=(nn+1) mod 5;
    while(r[nn]!=0)
      nn=(nn+1) mod 5;
    n-=1;
  }
  r[nn]=a+1;
}

acho que não vai retornar o mesmo valor de antes.... pq tipo, o vetor r[4] vai adicionar sempre a sequência de 1 - 2 - 3 - 4 como mostra essa linha r[nn]=a+1; a meu ver tudo que está dentro do laço for será despresado.

@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á.
avatar
Data de inscrição : 15/06/2008
Número de Mensagens : 50
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuáriohttp://pedrosorio.nfshost.com

Re: Random 5 veses sem repetir o mesmo valor

em Ter 07 Out 2008, 16:08
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?

A meu ver, a linha r[nn]=a+1 vai colocar na posição nn do array r, o valor a+1, (1,2,3,4,5). Evidentemente a aleatoriedade se encontra no 'nn', isto é, na posição do array onde é colocado o número.

O algoritmo limita-se a gerar um número aleatório 'n' e a percorrer o array em busca de posições que ainda não têm valores atribuídos. Cada vez que encontra uma dessas, diminui o 'n' até chegar a 0. Quando aqui chega atribui à posição actual 'nn' o valor designado. Temos assim uma posição perfeitamente aleatória. Já tinha aliás mostrado este algoritmo noutro tópico da gmbr.

Embora o ciclo não tenha que ser percorrido muitas vezes, a verdade é que não vale a pena estar a diminuir n até chegar a 0. Um pouco de aritmética modular simples resultaria no seguinte código equivalente:

Código:

r[4]=0;
randomize();
for(a=0;a<=4;a+=1) {
  n=floor(random(200))+1;
  n=n mod (5-a);
  if(n==0)
    n=5-a;
  nn=0;
  while(n>0) {
    nn=(nn+1) mod 5;
    while(r[nn]!=0)
      nn=(nn+1) mod 5;
    n-=1;
  }
  r[nn]=a+1;
}

Pode parecer que me limitei a adicionar código "desnecessário" mas se quisermos gerar uma lista de números aleatórios muito grande, este código executará bem mais rápido que a minha versão anterior.
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum