require 'bigdecimal' def getRandomMoney(remainSize, remainMoney) if remainSize == 1 remainSize -= 1 return remainMoney.floor(2) end min = 0.01 max = remainMoney / remainSize * 2.0 money = rand * max money = money < min ? 0.01 : money money = money.floor(2) # remainSize -= 1 # remainMoney -= money money end n = 10 money = BigDecimal.new(100) 10.times do t = getRandomMoney(n, money) puts t.to_f n -= 1 money -= t end