крэг


играют с тремя зарами, вдвоем, в один раунд

играют на обговоренную ставку, которую каждый игрок ставит перед началом раунда

самый первый раунд очередность хода определяют жребием, а все последующие раунды первым бросает игрок, который проиграл

после своего броска игрок может перебросить любое количество костей (хотя бы и все три), но только в одну попытку - и по результатам игрок выбирает комбинацию

комбинации

сет x-x-x 2.8%
крэг (Σ = 13) 6-6-1 , 6-5-2 , 6-4-3, 5-5-3 , 4-4-5 9.7%
пара x-x-y 37.5%

при равенстве пар, выигрывает тот, у кого больше третий зар

при двух крэгах - ничья, вне зависимости от выпавших зар соперника

если у обоих не выпало комбинаций, тогда выигрывает тот, у кого сумма очков на всех трех зариках больше

при равенстве комбинаций или сумм очков банк остается нетронутым, игроки меняются очередностью бросков начиная новый раунд

вероятности

листинг Хаскеля :

module Crag where 

import Control.Monad

dice_1 :: [Int]
dice_1 = [1..6]

dice_3 :: [(Int,Int,Int)] 
dice_3 = dice_1 >>= \ a -> dice_1 >>= \ b -> dice_1 >>= \ c -> return (a,b,c) 

set :: Double
set = 6 / 6^3 

pair :: Double
pair = 
  let n = length $ dice_3 >>= \(x,y,z) ->
            guard ((x + y + z /= 13) && x == y && y /= z) >> return (x,y,z)
  in 3 * (fromIntegral n) / 6^3
-- three different possibilities : x=y x=z z=y so multiply by 3

crag :: Double
crag = 
  let n = length $ dice_3 >>= \(x,y,z) ->
            guard (x + y + z == 13) >> return (x,y,z)
  in (fromIntegral n) / 6^3