0votos

metodo randomGlobal en Haskell

por josejuan hace 4 años

Como son números enteros, únicamente hay que incrementar (o no) la cota inicial y decrementar (o no) la cota final.

Se trata de crear un método al que pasamos los valores de un intervalo de números enteros, y nos devuelve un número aleatorio de dicho intervalo, pudiendo indicar al método si queremos que se incluya o no cualquiera de los límites de dicho intervalo (intervalo cerrado, abierto o mixto).

1
2
3
4
5
6
7
8
9
10
11
boundedRIO ia ib (a, b) 
         | ia && ib  = randomRIO'           (a    ,     b) 
         | not ia    = boundedRIO True ib   (a + 1,     b) 
         | otherwise = boundedRIO True True (a    , b - 1) 
 
 
 
 
-- Como `randomRIO` admite que las cotas estén invertidas y el desafío no lo permite: 
randomRIO' (a, b) = if a > b then error $ "`a` must be equal or less than `b` (but " ++ show a ++ " > " ++ show b ++ ")" 
                             else randomRIO (a, b) 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.