Saya ingin item array saya diacak. Sesuatu seperti ini:
[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]
dan seterusnya, secara acak
Dibangun sekarang:
[1,2,3,4].shuffle => [2, 1, 3, 4]
[1,2,3,4].shuffle => [1, 3, 2, 4]
!
setelah panggilan untuk mengacak. Tanpa!
array shuffled dikembalikan, dan matang untuk tugas.Untuk ruby 1.8.6 (yang tidak memiliki shuffle bawaan):
sumber
sort_by
fungsi ruby tidak berfungsi seperti fungsi sortir javascript (atau fungsi sortir ruby dalam hal ini), yang hanya peduli apakah angka yang dihitung kurang dari nol, nol atau lebih besar dari nol. Alih-alihsort_by
mengingat nilai yang dihitung untuk setiap item dan kemudian mengurutkan item dengan nilai itu. Jadi dalam hal ini setiap item diberi nomor acak dan kemudian array diurutkan berdasarkan angka-angka acak itu.Untuk ruby 1.8.6 sebagai contoh sepp2k, tetapi Anda tetap ingin menggunakan metode "shuffle".
Bersulang
sumber
Kode dari Gem Backports hanya untuk Array untuk Ruby 1.8.6. Ruby 1.8.7 atau lebih tinggi sudah ada di dalamnya.
sumber
The Ruby Aspek perpustakaan ekstensi memiliki
Random
modul yang menyediakan metode yang berguna termasukshuffle
danshuffle!
untuk sekelompok kelas inti termasukArray
,Hash
danString
.Berhati-hatilah jika Anda menggunakan Rails karena saya mengalami beberapa bentrokan yang tidak menyenangkan dalam cara monkeypatchingnya berbenturan dengan Rails ...
sumber