J'aimerais que mes éléments de tableau soient brouillés. Quelque chose comme ça:
[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]
et ainsi de suite, au hasard
Construit maintenant:
[1,2,3,4].shuffle => [2, 1, 3, 4]
[1,2,3,4].shuffle => [1, 3, 2, 4]
!
après l'appel à la lecture aléatoire. Sans le,!
le tableau mélangé est retourné et mûr pour une affectation.Pour ruby 1.8.6 (qui n'a pas de shuffle intégré):
la source
sort_by
fonction de ruby ne fonctionne pas comme la fonction de tri de javascript (ou la fonction de tri de ruby d'ailleurs), qui se soucie uniquement de savoir si le nombre calculé est inférieur à zéro, zéro ou supérieur à zéro. Au lieusort_by
de cela, il se souvient de la valeur calculée pour chaque élément, puis trie les éléments par cette valeur. Donc, dans ce cas, chaque élément se voit attribuer un nombre aléatoire, puis le tableau est trié par ces nombres aléatoires.Pour ruby 1.8.6 comme exemple de sepp2k, mais vous voulez toujours utiliser la méthode "shuffle".
à votre santé
la source
Code de la gemme Backports uniquement pour le tableau pour Ruby 1.8.6. Ruby 1.8.7 ou supérieur est intégré.
la source
La bibliothèque d'extensions Ruby Facets a un
Random
module qui fournit des méthodes utiles, y comprisshuffle
etshuffle!
à un tas de classes de base, y comprisArray
,Hash
etString
.Faites juste attention si vous utilisez Rails car j'ai vécu des affrontements désagréables dans la façon dont son monkeypatching s'est heurté à Rails '...
la source