Foros del Web » Programando para Internet » PHP »

[Resuelto] ¿como funciona array_rand()?

Estas en el tema de [Resuelto] ¿como funciona array_rand()? en el foro de PHP en Foros del Web. hola gente, la duda realmente no es como usarlo y que devuelve. la funcion devuelve un valor aleatorio de un array. si se le indica ...
  #1 (permalink)  
Antiguo 02/10/2009, 22:01
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
[Resuelto] ¿como funciona array_rand()?

hola gente,

la duda realmente no es como usarlo y que devuelve. la funcion devuelve un valor aleatorio de un array. si se le indica un segundo argumento (numerico), devuelve un array que contiene keys aleatorios del array segun la cantidad indicada. estoy claro en eso.

mi duda mas bien es, ¿que sucede si se le indica un numero mayor al largo del array?. ¿la funcion puede repetir el key? es decir,
Código:
$mi_array = array('uno', 'dos', 'tres');
$random = array_rand($mi_array, 3);
¿$random puede contener keys repetidos? ya busque informacion en el manual oficial y en mi libro pero no habla sobre este aspecto. tampoco puedo comprobarlo porque no tengo php instalado en mi maquina. no es que tenga un problema particular, sino que estoy transportando ciertas funciones de php a javascript y necesito saber sobre ese aspecto para determinar como implementarlo lo mas parecido posible.

cualquier comentario es bienvenido,
gracias.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 03/10/2009 a las 13:22 Razón: resuelto
  #2 (permalink)  
Antiguo 03/10/2009, 06:33
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: ¿como funciona array_rand()?

Hola,

Probé la función en mi pc, creando un array con 4 elementos, y pasándole a array_rand un 6 como 2do argumento, y me lanzó este error.

Código:
Warning: array_rand() [function.array-rand]: Second argument has to be between 1 and the number of elements in the array in C:\....\index.php on line 151

Este es el código

Código PHP:
$arr = array('1','2','3','4');
print_r(array_rand($arr6)); 
Si te fijas no repite datos, sencillamente lanza un error. Espero te sirva.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 03/10/2009, 11:55
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: ¿como funciona array_rand()?

Hola
Pues el random no tiende a repetirse mucho, pero pues
al ser random puede llegar a repetir valores en algún
momento, y pues para esto sería agregar validaciones adicionales

En cuanto a si le pasas un número mayor de valores en array_rand,
genera un error pues no va a poder hacer el aleatorio si el número
es mayor a los elementos del array
Por esto, tendrías que hacer un count($array) por ej para saber el número
máximo de elementos del array, y antes de pasarle el valor a array_rand
hacer otro random para que escoja un número entre 0 y el valor de count($array)
si es que quieres hacer esa validación adicional
Bueno, suerte con eso
saludos
  #4 (permalink)  
Antiguo 03/10/2009, 12:35
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: ¿como funciona array_rand()?

gracias gente por la informacion. sin embargo no me queda muy claro el aspecto de la repeticion.
Código:
$mi_array = array('uno', 'dos', 'tres');
$random = array_rand($mi_array, 3);
siguiendo ese ejemplo, ¿existe la probabilidad que me devuelva un array tal que [0,0,1]?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 03/10/2009, 12:51
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: ¿como funciona array_rand()?

Hola
Con ese ejemplo siempre te devolvera esto

Array ( [0] => 0 [1] => 1 [2] => 2 )
Esto porque no tiene más elementos con los cuales
hacer más aleatorios, si agregas elementos al array $mi_array si
te varian los resultados
Y en cuanto a la repetición, no se da el caso de
obtener esto
Array ( [0] => 0 [1] => 1 [2] => 2 )
pero se pueden dar casos como estos

Array ( [0] => 0 [1] => 1 [2] => 2 )
Array ( [0] => 1 [1] => 0 [2] => 2 )
Donde , si te fijas, la posición 2 es la misma, pero pues
los demás cambian, no es tan crítico creo yo, bueno, todo es
cuestión de perspectiva
Saludos
  #6 (permalink)  
Antiguo 03/10/2009, 12:55
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: ¿como funciona array_rand()?

Cita:
Y en cuanto a la repetición, no se da el caso de
obtener esto
Array ( [0] => 0 [1] => 1 [2] => 2 )
pero se pueden dar casos como estos

Array ( [0] => 0 [1] => 1 [2] => 2 )
me dejastes confuso ahi, ¿te fijas que ambos array soy iguales?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 03/10/2009, 12:59
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: ¿como funciona array_rand()?

Hola
Pues creo que no me hice entender

Cuando dije
"Y en cuanto a la repetición, no se da el caso de
obtener esto
Array ( [0] => 0 [1] => 1 [2] => 2 ) "
Hacia referencia a lo que tu decias de obtener repeticiones
del tipo 0,0,1 pero con mi ejemplo
Ahora, ese ejemplo estaba basado en el tuyo, y por eso
te escribi que si no le agregabas elementos al array siempre
te iba a mostrar eso en las mismas posiciones

y cuando dije
"pero se pueden dar casos como estos

Array ( [0] => 0 [1] => 1 [2] => 2 )
Array ( [0] => 1 [1] => 0 [2] => 2 ) "
ya eran pruebas sobre lo nuevo , enredado aún? jajaj, bueno,
espero que no
  #8 (permalink)  
Antiguo 03/10/2009, 13:21
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: ¿como funciona array_rand()?

creo que ya lo entendi, gracias por la ayuda.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:48.