The simplest shuffle algorithm, Fisher-Yates, is widely used and easy to implement. I personally used it to create a card game in Sinatra:
# Fisher-Yates Shuffle Algorithm module FisherYates def self.shuffle(numbers) n = numbers.length while n > 0 x = rand(n-=1) numbers[x], numbers[n] = numbers[n], numbers[x] end return numbers end end
So let's imagine you want to use it in your Rails app, you could do something like this:
def initialize(numbers) shuffle = FisherYates.shuffle(numbers) return shuffle.inspect end
If you want to test this script from shell, add this after FisherYates
, and save as shuffle.rb
. Add numbers as arguments, or just execute script to shuffle defined numbers from array:
@numbers = [1,2,3,4,5,6,7,8,9,10,12,13,14] if ARGV.empty? puts FisherYates.shuffle(@numbers).inspect else puts FisherYates.shuffle(ARGV).inspect end
Without inspect
you would get each number in separated line, but with inspect
we receive array of numbers printed in terminal.
Top comments (0)