Entrar
Últimos assuntos
» Servidor de Discord do fórum?por Super Games Ontem à(s) 01:27
» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10
» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» 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
» 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
» 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
Random 5 veses sem repetir o mesmo valor
+8
pedrosorio
Volstagg
rodrigo1434
Froidz
vinians
RKNF1995
Gusba
Janx
12 participantes
Página 1 de 2
Página 1 de 2 • 1, 2
Random 5 veses sem repetir o mesmo valor
è 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???
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???
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
acho que ele quer que apareça 5 numeros aleatorias mas que nao se repitam
Re: Random 5 veses sem repetir o mesmo valor
Coloque no evento CREATE em um objeto de inicializacao:
- Código:
randomize();
- Código:
numero = ceil(random(5));
Re: Random 5 veses sem repetir o mesmo valor
noossa explica porfavor?? O_O!"
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
será que criando 5 alarms resolveria o problema?
Soh uma sugestão ^^
Soh uma sugestão ^^
Froidz- Data de inscrição : 03/08/2008
Reputação : 4
Número de Mensagens : 1053
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
Nao O.oClaudio Bruno escreveu:será que criando 5 alarms resolveria o problema?
Soh uma sugestão ^^
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
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
Re: Random 5 veses sem repetir o mesmo valor
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}
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)
Re: Random 5 veses sem repetir o mesmo valor
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??
Janx- Data de inscrição : 24/05/2008
Reputação : 14
Número de Mensagens : 2417
Prêmios :
x 0 x 0 x 0
x 0 x 2 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
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:
*obs: código testado na versão 7 do GM[u]
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);
*obs: código testado na versão 7 do GM[u]
Re: Random 5 veses sem repetir o mesmo valor
Que "codigozão" heim!
Volstagg- Data de inscrição : 16/05/2008
Reputação : 0
Número de Mensagens : 353
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
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;
}
Re: Random 5 veses sem repetir o mesmo valor
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...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;
}
Re: Random 5 veses sem repetir o mesmo valor
LOL
É o que dá escrever código às tantas da noite sem testar, evidentemente faltava uma linha fundamental:
É 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;
}
Re: Random 5 veses sem repetir o mesmo valor
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á.
dani- Data de inscrição : 03/10/2008
Reputação : 0
Número de Mensagens : 30
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Random 5 veses sem repetir o mesmo valor
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:
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.
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.
Página 1 de 2 • 1, 2
Tópicos semelhantes
» Como fazer imagen random sem repetir?
» Repetir time line e fazer step ser random
» [resolvido] Como contar tantas veses de algo?
» Repetir alarme
» como repetir uma ação?
» Repetir time line e fazer step ser random
» [resolvido] Como contar tantas veses de algo?
» Repetir alarme
» como repetir uma ação?
Página 1 de 2
Permissões neste sub-fórum
Não podes responder a tópicos
|
|