[Pedido] Gerar nъmeros 2 aleatуrios sem repetir
#1

Olб, como eu faзo para gerar 2 nъmeros aleatуrios de 0 a 5 e fazer eles nгo repetir?
Eu tentei fazer aqui, mas nгo to conseguindo.
Reply
#2

Код:
stock randomValue(max, non_r_value = -1) { // randomValue(valor mбximo, valor que nгo pode repetir);

  new rand = random(max);
  while(non_r_value == rand) {
    rand = random(max);
  }

  return rand;
}

// Exemplo de uso
new cor1 = random(5), cor2 = randomValue(5, cor1);

CreateVehicle(402, /*Nas coordenadas foda-se*/, cor1, cor2, 0);
OBS: Nгo compilei, mas parece estar correto.

@EDIT

Toma cuidado para nгo colocar -1 no valor a nгo repetir se nгo vai gerar um loop infinito.
Reply
#3

Eu fiz assim:

PHP код:

CMD
:numero(playerid)
{
    new 
number1number2string[255];
    
number1 randomValue(9number1);
    
number2 randomValue(9number2);
    
    
format(stringsizeof(string), "%d %d"number1number2);
    
SendClientMessage(playerid, -1string);
    return 
1;

Vк se ta certo, por que saiu nъmero repetido 55
Reply
#4

Vocк usou errado a funзгo:

Quote:
Originally Posted by GasparzinhoXD
Посмотреть сообщение
Eu fiz assim:

PHP код:

CMD
:numero(playerid)
{
    new 
number1number2string[255];
    
number1 random(9);
    
number2 randomValue(9number1);
    
    
format(stringsizeof(string), "%d %d"number1number2);
    
SendClientMessage(playerid, -1string);
    return 
1;

Vк se ta certo, por que saiu nъmero repetido 55
Ela deve ser usada assim:

Код:
randomValue(max, non_r_value = -1)
// max: O valor mбximo que a funзгo pode retornar.
// non_r_value = -1: O valor que nгo deve ser repetido.

new valor1, valor2;
valor1 = random(100); // Vai retornar um valor entre 0 e 100.
valor2 = random(100, valor1); // Vai retornar um valor entre 0 e 100 diferente do valor da variбvel valor1.
Reply
#5

Mas nгo era pra gerar nъmeros de 0 б 9 sem repetir? ;-;
Reply
#6

Quote:
Originally Posted by GasparzinhoXD
Посмотреть сообщение
Mas nгo era pra gerar nъmeros de 0 б 9 sem repetir? ;-;
Troque seu comando por este:
Код:
CMD:numero(playerid) 
{ 
    new number1, number2, string[255]; 
    number1 = random(9); 
    number2 = randomValue(9, number1); 
     
    format(string, sizeof(string), "%d %d", number1, number2); 
    SendClientMessage(playerid, -1, string); 
    return 1; 
}
Reply
#7

https://imgur.com/a/gxqobQq Ta repetindo.
Reply
#8

Ata, vocк quer setar numeros e nгo quer que eles se repitam nunca.
Entгo eu tenho que mudar a funзгo.
Код:
new val_array[100]; // Se mudar o nome desta array, mude dentro da funзгo tambйm.

public OnGameModeInit() {
  for(new r; r < sizeof val_array; r++) val_array[r] = -1; // Coloque isto no seu GM.
}

stock randomValue(max) { // randomValue(valor mбximo);

  new rand = random(max);
  for(new i; i < sizeof val_array; i++) {
  	while(val_array[i] == rand) {
  		rand = random(max);
  	}
  }

  for(new j; j < sizeof val_array; j++) {
    if(val_array[j] == -1)
      val_array[j] = rand;
  }

  return rand;
}
	
new string[255];
format(string, sizeof(string), "%d %d", randomValue(255), randomValue(255));
SendClientMessage(playerid, -1, string);
Reply
#9

Tipo, com essa funзгo ai, eles podem repetir assim nй: 55, mas nгo aparecer em baixo o mesmo exemplo:
55
55

correto?

@edit Por quando coloquei
PHP код:
    new string[255];
    
format(stringsizeof(string), "%d%d"randomValue(1), randomValue(2));
    
SendClientMessage(playerid, -1string); 
Nгo apareceu nada?
Reply
#10

Quote:
Originally Posted by GasparzinhoXD
Посмотреть сообщение
Tipo, com essa funзгo ai, eles podem repetir assim nй: 55, mas nгo aparecer em baixo o mesmo exemplo:
55
55

correto?
Correto.

Quote:

@edit Por quando coloquei
PHP код:
    new string[255];
    
format(stringsizeof(string), "%d%d"randomValue(1), randomValue(2));
    
SendClientMessage(playerid, -1string); 
Nгo apareceu nada?

Me da um tempo que eu vou debugar essa funзгo.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)