Comunidad de diseño web y desarrollo en internet online

ayuda para nueros aleatorios?

Citar            
MensajeEscrito el 15 Feb 2005 06:04 pm
Hola , que hay, a ver si e podeis ayudar u orientare sobre una cosa que quiero hacer con los randoms y un jueguecillo.
vereis quiero sacar 10 numeros aleatorios del 1 al 10, pero sin que se repitan, es decir si el primer numero sale el 5 despues en los restantes 9 intentos que no vuleva a a salir 5 y asi sucesivamente, ...es decir 5, 8,6,7,2,6,2...pero que no hya un numero repetido
lo habia intentado comn un monton de ifs pero es un lio y da problemas, tb habia intentado con un for de 0 a 9 y un rnd(9) y que le restas uno, cro que esa es la forma correcta pero no me acaba de salir,bueno a ver que decis o sugeris, gracias

Por alf

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 Feb 2005 07:04 pm
oups! yo hace tiempo tenia uno script que te lo hacia todito lo que pides... la cosa era sencilla, haces un random y el numero que sale lo metes en un array, haces otro random y si el numero NO esta en el array entonces lo añades, SI LO ESTA, entonces haces otro random... y asi...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 17 Feb 2005 08:07 pm
Hola , gracias por responder. Mas o menos creo haber entendido, sin emmbargo a la hora e llevarlo a actionscript y despues de probarlo varias veces me he acabado liando, asi que si podeis echar una mano, veres hago un for para conseguir el primer numero aleatorio...despues ese numero que sale lo pongo en un primer array(contenedor)...despues hago un segundo for anidado para ver si ese numero esta repetido y si no lo esta lo pongo en un segundo array( nuevocontenedor que es el que no debe tener numeros repetidos)bueno os pongo el codigoy si podeis echarloun vistazo y comentarme, gracias de nuevo

for (i=0; (i<nuevocontenedor.length); i++) {
aleatorio = (random(6)+1);
contenedor = new Array();
contenedor[i] = aleatorio;
for (s=0; s<contenedor.length; s++) {
if ((contenedor[i] != nuevocontenedor[s]) or (contenedor.length=1)) {
nuevocontenedor = new Array();
nuevocontenedor[s] = aleatorio;
trace(nuevocontenedor[s]);
}
}
}


Bueno ya para rizar el rizo si podeis decirme como puedo sacar esos numeros ordenados por valor,de menor a mayor, bueno a ver si podeis orientarme , gracias

Por alf

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Feb 2005 09:26 pm
la cosa es que tienes el "new Array" dentro del for, y asi no chuta...

prueba algo como
num = new Array();
todos = false;

while(!todos) {
n = random(XX)+1;
estoy = false;
if(num.length>0) {
for(i=0;i<num.length;i++) {
if(n==num[i]) {
estoy = true;
break;
}//if
}//for
}//if

if(estoy == false) {
num.push(n);
};
}//while

kreo que con eso deberia de ir, si no me cuentas y ya abro el flash y lo pruebo.. saludetes

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 18 Feb 2005 08:45 am
Hola , acabo de probarlo en el flash el codigo yse queda tambien en un bucle infinito, como el anterior codigo que puse, voy a echarlo un vistazo a ver donde esta el error. seguiremos probando,gracias.

Por alf

6 de clabLevel



 

msie
Citar            
MensajeEscrito el 18 Feb 2005 02:34 pm
yo insisto en q no se debe usar random(numero); se debe usar Math.random() y multiplicar ese resultado segun el valor q se desea obtener

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 18 Feb 2005 02:40 pm
y el script es asi:

Código :

var max = 10;
var total = 10;
var arreglo = new Array();
var posiciones = new Array();
while (arreglo.length<total) {
   numero = (Math.round(Math.random()*max));
   if (!posiciones[numero]) {
      posiciones[numero] = true;
      arreglo.push(numero);
   }
}
trace(arreglo);

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 18 Feb 2005 02:45 pm
bueno, el random(numero) lo que hace es exactamente lo de Math.roud(numero*Math.random()); y al caso es lo mismo no¿?

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 18 Feb 2005 03:11 pm
random
Disponibilidad
Flash Player 4. Esta función se eliminó en Flash 5 y se sustituyó por Math.random().

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 18 Feb 2005 03:12 pm
un momento se q esta en el pasado pero el resulado daria lo mismo, hmmm es q pasa lo mismo q en .NET se dice q las viejas funciones se eliminaran para la prox version (:roll: o por lo menos se eliminaran en su mayoria) es por eso q se estan dando en desuso al igual q el loadVariablesNum()

Saludox :cc:

Por flasher

Invitado



 

firefox
Citar            
MensajeEscrito el 18 Feb 2005 03:35 pm
pero vamos, no deberían quitar el random pues sí sirve
por otro lado loadvariables no sirve porque necesitas poner un evento que esté checando cómo va la carga de los datos
personalmente prefiero random

Por fael

BOFH

2443 de clabLevel

3 tutoriales
2 articulos

 

firefox
Citar            
MensajeEscrito el 18 Feb 2005 03:53 pm
Macromedia lo hace por su orientacion a objetos, y volvio deprecated las funciones q no pertenecian a ningun objeto

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 18 Feb 2005 04:11 pm
bueno si, pero podrian mejorar el objeto math. algo como

static class MyMath extends Math {
this.rand(MyMath_numero) {
return this.round(MyMath_numero*this.random());
};
};


en varios lenguajes [creo recordar que por ejemplo en el BASIC de las Texas Instrument, en Div2 kreo que tb,.... "cohabitan" las funciones rand y random, una entre 0 y 1 y la otra entre 0 y cualkier numero [devolviendo enteros]

y si, el resultado supongo que sera el mismo, pero en la cuestion didactica/aprendizaje yo kreo que es mejor tener un random(numero) antes que un MAth.round(numero*Math.random()); pues aklara bastante mas.

Pero bueno, si MM kiere kitarlo pues intentare no usarlo [si es que lo hacia antes] mas.... saludetes y gracias por el apunte!!

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 18 Feb 2005 04:17 pm
oh yeah...
todo viene en un paquete (objeto) llamado Math

Por flasher

Invitado



 

firefox
Citar            
MensajeEscrito el 23 Feb 2005 12:52 pm
y se pueden sacar por un random a un arreglo que tenga los numeros...???


y que cada vez que muestre uno lo elimine... y asi... sustantivamente... :lol:

yo una vez hice eso pero en pascal... :?

Por cybervago18

21 de clabLevel



 

msie
Citar            
MensajeEscrito el 23 Feb 2005 01:59 pm
:? no entendi bien, osea hacer un random al array y cuando te muestra el dato lo elimina <- y porque
asi hasta quedaret sin numeros <- e asi lo q dices

Por flasher

Invitado



 

firefox
Citar            
MensajeEscrito el 23 Feb 2005 02:44 pm
pues es sencillo, haces lo mismo que se pone arriba, [guardar los numeros del 1 hasta N en un array] y despues vas recuperando esos numeros, por ejemplo si tienes

numerosLocos = [123,456,789,666,321,314,587,...]
pues vas recuperando los numeros como
numerosLocos[n]; donde n es el numero que resulta de ver si esta o no en el array

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 23 Feb 2005 04:16 pm
no recuerdo bien el codigo, pero se utiliza el random como un puntero al arreglo... y termina cuando el arreglo este vacio...

no se si flash tiene la opcion de ver si esta vacio, pero si la tuviera seria algo asi...

while (no este vacio)
i=random(10)
arreglo[i]=(lo muestra)
arreglo[i]=(borrado)


eso... bueno no soy programador pero creo que como para una idea te puede servir...
[/img]

Por cybervago18

21 de clabLevel



 

msie
Citar            
MensajeEscrito el 23 Feb 2005 06:09 pm
usando el codigo q puso _david arriba

Código :

var max = 10;
var total = 10;
var arreglo = new Array();
var posiciones = new Array();
while (arreglo.length<total) {
   numero = (Math.round(Math.random()*max));
   if (!posiciones[numero]) {
      posiciones[numero] = true;
      arreglo.push(numero);
   }
}


Código :

//------EL BUCLE Q QUIERES------//
i=0
while (arreglo.toString().length <> arreglo.length-1) {
   //i = Math.floor(Math.random()*10);
   trace(arreglo[i]);
   arreglo[i]="";
   i += 1
}
//------PARA PROBAR-------//
for (I=0;I<arreglo.length;I++) {
   if (arreglo[I]=="") {
      trace(I add " -> vacio");
   }
}


asi es :?

Saludos :D

Por flasher

Invitado



 

firefox
Citar            
MensajeEscrito el 23 Feb 2005 07:55 pm
umm haciendolo algo mas "dinamico" esto deberia de funcionar

var ar:Array = new Array(/*aki los valores que quieras*/);
while(ar.length>0) {
r = random(ar.length);
trace(ar[r]);
ar.splice(r,1);
};

Basicamente lo que hace es coger la matriz, elije un numero al azar entre sus posiciones, la pone en pantalla y acto seguido la saca de la matriz...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 24 Feb 2005 12:51 pm
ahora que alguien lo pruebe.... :D :lol:

Por cybervago18

21 de clabLevel



 

msie
Citar            
MensajeEscrito el 26 Mar 2005 10:50 am
hice un botón y le puse nombre de instancia "BT"
tengo 5 archivos swf externos y lo que quiero es que cada vez que pulse el "BT" cargue aleatoriamente un archivo swf , pero que nunca cargue el mismo. Entonces escribo en el fotograma en cuestión lo siguiente:
fotos = ["A.swf","B.swf","D.swf","E.swf","F.swf"];
BT.onPress = function() {
loadMovieNum(fotos.splice(random(fotos.length),1), 1);
};


Esto funciona bien, espero qeu te sirva, pero lo que a mi me sucede es que quiero crear otro botón que al pulsar me repita el último swf cargado... si sabes cómo.. please.. escríbeme.

Por satjai

4 de clabLevel



 

msie
Citar            
MensajeEscrito el 07 Oct 2008 09:39 pm

satjai escribió:

hice un botón y le puse nombre de instancia "BT"
tengo 5 archivos swf externos y lo que quiero es que cada vez que pulse el "BT" cargue aleatoriamente un archivo swf , pero que nunca cargue el mismo. Entonces escribo en el fotograma en cuestión lo siguiente:
fotos = ["A.swf","B.swf","D.swf","E.swf","F.swf"];
BT.onPress = function() {
loadMovieNum(fotos.splice(random(fotos.length),1), 1);
};


Esto funciona bien, espero qeu te sirva, pero lo que a mi me sucede es que quiero crear otro botón que al pulsar me repita el último swf cargado... si sabes cómo.. please.. escríbeme.
disculpa en que flash esta hecho este ejemplo que has puesto?

Por Rikardo

13 de clabLevel



Genero:Masculino  

El Salvador

firefox
Citar            
MensajeEscrito el 08 Oct 2008 06:48 am
Si te fijas, verás que ese post es del 2005, así que dudo que satjai te conteste. Por otro lado, está escrito en AS2, aunque loadMovieNum ya no se recomienda en esa versión de AS.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.