Я бы хотел, чтобы элементы моего массива были перемешаны. Что-то вроде этого:
[1,2,3,4].scramble => [2,1,3,4]
[1,2,3,4].scramble => [3,1,2,4]
[1,2,3,4].scramble => [4,2,3,1]
и так далее, случайным образом
Встроено сейчас:
[1,2,3,4].shuffle => [2, 1, 3, 4]
[1,2,3,4].shuffle => [1, 3, 2, 4]
!
после вызова в случайном порядке. Без!
перетасованного массива возвращается и готов к присваиванию.Для Ruby 1.8.6 (в котором нет встроенного перемешивания):
источник
sort_by
функция ruby не работает как функция сортировки javascript (или функция сортировки ruby в этом отношении), которая заботится только о том, является ли вычисленное число меньше нуля, нуля или больше нуля. Вместо этогоsort_by
запоминает вычисленное значение для каждого элемента, а затем сортирует элементы по этому значению. Итак, в этом случае каждому элементу присваивается случайное число, а затем массив сортируется по этим случайным числам.Для ruby 1.8.6, как в примере с sepp2k, но вы все равно хотите использовать метод "перемешивания".
ура
источник
Код из Backports Gem только для массива для Ruby 1.8.6. Ruby 1.8.7 или выше встроен.
источник
Рубин Грань библиотека расширений имеет
Random
модуль , который содержит полезные методы , включаяshuffle
иshuffle!
к связке основных классов , включаяArray
,Hash
иString
.Просто будьте осторожны, если вы используете Rails, так как я столкнулся с некоторыми неприятными конфликтами в том, как его monkeypatching столкнулся с Rails ...
источник