Рандомизирующие элементы массива - PullRequest
8 голосов
/ 29 сентября 2010

у меня есть массив @number = [1,2,3,4,5,6,7,8,9]
Теперь я хочу рандомизировать содержимое массива ... что-то вроде, например: [5,3,2,6,7,1,8]
Пожалуйста, объясните мне, как это сделать.

Ответы [ 5 ]

11 голосов
/ 29 сентября 2010

Используйте метод shuffle ...

irb(main):001:0> [1,2,3,4,5].shuffle
=> [3, 4, 2, 5, 1]
8 голосов
/ 29 сентября 2010

команда shuffle возвращает рандомизированную версию массива

например:

[1,2,3].shuffle => [2,3,1]
1 голос
/ 29 сентября 2010
[1,2,3,4,5,6,7,8,9].sort_by {rand}[0,9]  
=> [5, 7, 3, 8, 9, 4, 2, 1, 6]
0 голосов
/ 29 сентября 2010

Если вы используете старую версию ruby ​​... это будет работать

def randomize(array)
b = []
array.length.downto(1) { |n|
    b.push array.delete_at(rand(n))
} 
b 

end

a = [1,2,3,4,5] b = randomize (а) печать b

0 голосов
/ 29 сентября 2010
loop n times
   i = random array index
   j = random array index
   swap elements i and j
end
...