Skip to content

Instantly share code, notes, and snippets.

@b2climbing
Created August 17, 2009 12:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save b2climbing/169059 to your computer and use it in GitHub Desktop.
Save b2climbing/169059 to your computer and use it in GitHub Desktop.
class RouletteTable
BLACk=[2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35]
RED=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]
def self.spin
result = rand(37)
return :green if result == 0
return :black if BLACk.include?(result)
return :red if RED.include?(result)
end
end
INITIAL_BANK=2000
BETTING_LIMIT=500
winnings=[]
1000.times do
bank = INITIAL_BANK
bet = 1
100.times do
break if (bank - bet) < 0
bank -= bet
if RouletteTable.spin == :black
bank += bet*2
bet = 1
next
end
if bet <= BETTING_LIMIT
bet = (bet*2.5).to_i
else
bet = 1
end
end
winnings << bank - INITIAL_BANK
end
profit = winnings.select{|i| i > 0}.length
loss = winnings.select{|i| i < 0}.length
avg = winnings.inject{|acc,i| acc + i} / winnings.length
puts "Times Won: #{profit}"
puts "Times Lost: #{loss}"
puts "Average win amount: #{avg}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment