将生成的随机数保存在变量Haskell中

将生成的随机数保存在变量Haskell中,haskell,random,numbers,Haskell,Random,Numbers,我必须做一个叫猜数字的游戏作为家庭作业。 (玩家A想到某个数字A B正在猜测A想到的是哪个数字) 我需要实现它的方式,我会给程序一个时间间隔,在这个时间间隔内,玩家A会想到一些数字,然后B会通过询问A的数字是否高于60来猜测,然后A说例如是,所以B会猜测刚好高于60的数字,以此类推。。。 我只需要实现函数猜测数字,但我必须使用函数main和randNumber 我在将生成的数字保存到某个变量时遇到问题,以便以后使用。 这是带有错误消息的源代码 import Random main a b =

我必须做一个叫猜数字的游戏作为家庭作业。 (玩家A想到某个数字A B正在猜测A想到的是哪个数字)

我需要实现它的方式,我会给程序一个时间间隔,在这个时间间隔内,玩家A会想到一些数字,然后B会通过询问A的数字是否高于60来猜测,然后A说例如是,所以B会猜测刚好高于60的数字,以此类推。。。 我只需要实现函数猜测数字,但我必须使用函数main和randNumber

我在将生成的数字保存到某个变量时遇到问题,以便以后使用。 这是带有错误消息的源代码

import Random

main a b = getStdGen >>= (\gen -> guessTheNumber gen a b)

randNumber :: StdGen -> Int -> Int -> Int
randNumber gen a b = fst (randomR (a, b) gen)

guessTheNumber gen a b = do             
                a <- randNumber gen a b
        putStr("Player A guessed the number: " ++ a)


-- ERROR "1.hs":8 - Type error in generator
-- *** Term           : randNumber gen a b
-- *** Type           : Int
-- *** Does not match : a b
随机导入
主a b=getStdGen>>=(\gen->猜测编号gen a b)
randNumber::StdGen->Int->Int->Int
随机数gen a b=fst(随机数(a,b)gen)
猜测编号gen a b=do

randNumber
函数是纯函数。因此,您可以使用
let
保存返回值

此外,在打印之前必须将数字转换为字符串:使用
show
。不要使用括号:

guessTheNumber gen a b = do             
    let number = randNumber gen a b
    putStr $ "Player A guessed the number: " ++ show number

randNumber
函数是纯函数。因此,您可以使用
let
保存返回值

此外,在打印之前必须将数字转换为字符串:使用
show
。不要使用括号:

guessTheNumber gen a b = do             
    let number = randNumber gen a b
    putStr $ "Player A guessed the number: " ++ show number