Random число без повтаряне!

menugeo

Registered
Здравейте!

Имам следния скрипт:

Код:
_global.fonn = Math.floor(Math.random()*10)+1;

как да направя следващото random число, което се генерира да не е число, което вече е било генерирано. Разбира се ако не е много сложно.

Предполагам, че трябва да се направи променлива, която да приема получените числа и после да се проверява с новополучените стойност.

Такъв скрипт мога да измисла, но ми се вигда доста словен за нещо толкова просто и предполагам, че AS2 вече има нещо такова!

Всичко това е за AS
 
Псевдо код :

Дефинираш масив а.
Дефинираш променлива rand.

Задаваш стойност на променливата rand()
Код:
rand = Math.floor(Math.random()*10)+1;

Проверяваш дали rand съществува в масива :

Код:
if(a.indexOf(rand) == -1)
{
 // nqma q
// dobavqme q
  a.push(rand);
}

Вкарваш го в do {} while() цикъл.

Надявам се да съм бил ясен.
 
Ето намерих няколко кода:

Код:
total=10 // aqui se muestra el total de numeros que se eligen al azar
necesitar=10 // esta es la cantidad que se necesita capturar

matriz= new Array(); // creamos un arreglo 
for(fa=0; fa<=total-1; fa++){ //  mediante el ciclo for llenamos
	matriz[fa]=0; //el arreglo con el valor 0
}
for(p=0; p<=total-1; p++){ // repetimos esta operacion la cantidad de veces como numeros tengamos
	repetido=1 // agregamos como valor por defecto 1 a la variable repetir para que se cumpla el while
	while(repetido==1){ //repetiremos el siguiente script hasta que el numero no conicida con ningun otro
		repetido=0; //damos valor 0 a "repetido" para que no se repita de nuevo el script a menos de que sea necesario
		k=random(total)+1; //creamos el numero aleatoreo
		for(j=0; j<=total-1; j++){  //hacemos un ciclo para ver los numeros de los arreglos
			if(k==matriz[j]){ // y asi comprobar que un numero no se repite
				repetido=1; // de repetirse le damos valor 1 a la variable repetido y asi se cumple 		
			}// el metodo while y lo hara hasta que genere un valor que no se encuentre
		}
	}
	matriz[p]=k;// introducimos el valor generado a la matriz
	
}
for(p=0; p<=necesitar-1; p++){ // mostramos en pantalla los numeros generados
	trace(matriz[p]);
}
 
Ето и още един:

Код:
var guarda:Array=new Array();
_global.i=1;
while(_global.i<=10){
   numero=random(10)+1;
   compruebanumero(numero);
   }
   
function compruebanumero(numero){
   noesta=false;
   for(j=0;j<=guarda.length;j++){
      if(guarda[j]==numero){
         noesta=true;
         }
      
   }
if(noesta==false){
   guarda.push(numero);
   _global.i++;
   }
}
trace(guarda);
 
Пич вложи минимално мисъл и ще можеш да си го напишеш
Код:
 var a = [];
var rand = 0;
do {
rand = Math.floor(Math.random()*10)+1;
} while ( a.indexOf(rand) != -1)
a.push(rand);
 
Rado ти на това "минимално мисъл" ли му викащ.
То това си е цяла наука ...ама за хората дето я знаят всичко им се вижда "минимално мисъл"....то затова всеки по своето, че да го наречем професионализъм......
 

Back
Горе