8 skycraft.random.__index = skycraft.random
10 function skycraft.random:new(o)
20 function skycraft.random:calc_csum()
22 for i, choice in ipairs(self.choices) do
23 self.sum = self.sum + self.probabilities[choice]
24 self.csum[choice] = self.sum
28 function skycraft.random:choose()
29 local r = math.random() + math.random(0, self.sum - 1)
30 for i, choice in pairs(self.choices) do
31 if r < self.csum[choice] then
37 function skycraft.random:add_choice(choice, probability)
38 table.insert(self.choices, choice)
39 self.probabilities[choice] = probability