Seleccionar elementos de un Array de forma aleatoria
Posted by javier ramirez on September 4, 2007
A veces viene bien poder mostrar el contenido de un Array de forma aleatoria en Ruby. Por ejemplo, puedes querer mostrar en una tagcloud los tags más populares pero no quieres mostrarlos en orden para que quede más estético.
Normalmente usamos el método sort_by en arrays compuestos de objetos complejos para compararlos por algún campo, por ejemplo para un resultado de una consulta de AR podríamos hacer:
my_array.sort_by{|x| x.amount}
Podemos utilizar el mismo método de una forma simple para “desordenar” cualquier Array:
my_array.sort_by{rand}
Y con esto tendremos un array desordenado “al azar”. Podríamos incluso abrir la clase Array y definir un método shuffle que hiciera justamente esto, tal que así
class Array
def shuffle
self.sort_by{rand}
end
end
Y ahora ya podemos hacer:
my_array.shuffle
searchwords: ruby, array, sort_by, shuffle









