coin := proc(p) local a,b,r,c; # p = a/b; b := denom(p); a := numer(p); r := rand(1..b); c := proc() local roll; if r() <= a then return(true); else return(false); fi; end: return(c); end: PileS := proc(p, left, right) local l, r, numrolls, roll; l := left; r := right; numrolls := 0; roll := coin(p); while l+r > 0 do if roll() then if l > 0 then l := l - 1; fi; else if r > 0 then r := r - 1; fi; fi; numrolls := numrolls + 1; od; return(numrolls); end: PileD := proc(p, left1, right1, left2,right2) local l1, r1, l2,r2,numrolls, roll; l1 := left1; r1 := right1; l2 := left2; r2 := right2; numrolls := 0; roll := coin(p); while l+r > 0 do if roll() then if l > 0 then l := l - 1; fi; else if r > 0 then r := r - 1; fi; fi; numrolls := numrolls + 1; od; return(numrolls); end: