PHP - Funcion random

 
Vista:

Funcion random

Publicado por Sebastian (3 intervenciones) el 22/08/2007 19:38:41
Buenas tardes,
quisiera saber como hago para q' en un vector de 8 posiciones no me guarde mas de dos veces un nuero dado por la funcion random de 0 a 4. por ejemplo: q' no me repita el "1" tres veces en el vector.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

RE:Funcion random

Publicado por Yamil Bracho (888 intervenciones) el 22/08/2007 19:46:21
Generas el nuemro y chequea si ya esta en el vector contando las veecs que aparece. Si esta mas de tres veces no lo guardas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion random

Publicado por Sebastian (3 intervenciones) el 22/08/2007 21:06:02
Gracias por responder.

Pero en esa pocision necesito guardar un numero de todos modos, es decir el arreglo es de 8 posiciones y con los numeros del 1 al 4 dos veces en el vector: para q' quede algo asi:
1,2,4,2,3,3,1,4
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion random

Publicado por Diego Romero (1450 intervenciones) el 22/08/2007 21:32:20
Tal como lo propones si implementas la solución Yamil corres el riesgo de quedar en un ciclo infinito (o al menos el algoritmo quedará ciclando más allá del tiempo límite que PHP tiene configurado).

Propongo otra solución. Llena el array de forma tal que quede:

[1,1,2,2,3,3,4,4]

Y luego procede a intercambiar posiciones aleatoriamente. Así estarás seguro que el orden es aleatorio pero contiene dos veces cada cifra siempre.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion random

Publicado por Sebastian (3 intervenciones) el 22/08/2007 22:13:19
Muchas gracias por la ayuda, ya encontre la menera de hacerlo. lo dejo por si a alguien le inetresa

while($i<8)
{
$gran=rand(4);
for($j=0;$j<8;$j++)
{
if($gran==$cartas[$j])
$cont++;
}
if($cont<2){
$cartas[$i]=$gran;
$i++;
}
$cont=0;
}
Un saludo y gracias nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar