Thank you to anyone who has already donated - your generous donations helped make three months of treatment possible.

My brother Nate continues to fight stage IV Hodgkin's lymphoma. He's just 31, with a wife and baby girl. They have no active income (since he's been unable to return to work), no insurance, and cannot afford the treatment he needs. Nate and his family need your help. Please consider a donation, every dollar helps. Thanks.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
$NumberOfGamblers = 5000
$RoundsOfBetting = 5000  
$RoundsOfSimulation = 100      
$BetAmount = 10.00

class Gambler
  def initialize
    @balance = rand * 5000  # Gambler get 0 - 99.999% of $5000
    @initial = @balance     # save the inital balance
  end

  def win
    @balance += $BetAmount
  end

  def lose
    @balance -= $BetAmount
  end

  def broke
    @balance <= 0
  end

  def net
    @balance - @initial
  end
end

class Casino < Gambler                 
  # casino is a gambler with a very high balance 
  #  that never goes broke
  def initialize
    @balance = 100_000_000.00     
    @initial = @balance
  end

  def broke
    false
  end
end

def simulateCasino
  casino = Casino.new
  gamblers = []
  $NumberOfGamblers.times {gamblers << Gambler.new}

  $RoundsOfBetting.times do
    gamblers.each do |gambler|
      unless gambler.broke
        if rand(2) < 1
          $win +=1
          casino.lose
          gambler.win
        else       
          $lose+=1
          casino.win
          gambler.lose
        end
      end
    end
  end
     
  gWins = 0
  ttlGamblerWins = gamblers.each do |g|
    gWins += 1 if (g.net > 0)
  end

  puts "Casino #{casino.net < 0 ? 'lost' : 'won'} (net:#{casino.net})\n"
  puts "Winning Gamblers=#{gWins} of #{gamblers.count}\n"
  return [casino.net,gWins]
end

casinoWins = 0
$win = $lose = 0
totalCasinoNet = 0
losers = 0
winners = 0
$RoundsOfSimulation.times do 
  net,wins = simulateCasino
  totalCasinoNet += net
  casinoWins += 1 if net > 0
  losers += $NumberOfGamblers - wins
  winners += wins
end

puts "Casino won #{casinoWins} out of #{$RoundsOfSimulation} simulations"   
puts "Casino net:#{totalCasinoNet}\n"
puts "total losers:#{losers}\n"
puts "total winners:#{winners}\n"  
puts "percentage of winners:#{(winners.to_f/(winners.to_f+losers.to_f))*100.0}\n"     
puts "winning bets to losing bets:#{$win.to_f/$lose.to_f} (to evaluate overall 'fairness' of simulation bets)"