随机数功能

The*_*777 3 haskell

我正在尝试生成一个生成随机数的函数,这是我到目前为止所做的:

getRandom :: Int -> Int -> Int
getRandom x y = do
    z <- randomRIO( x, y )
Run Code Online (Sandbox Code Playgroud)

此代码给出了以下错误:

The last statement in a 'do' block must be an expression
Run Code Online (Sandbox Code Playgroud)

现在我理解了这个错误,但我不明白解决方案.

我试过了:

return z
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

PS我对Haskell非常新

Dan*_*zer 5

do块不能在绑定结束.他们不喜欢这样的东西

getRandom = randomRIO (x, y) >>= \z ->
Run Code Online (Sandbox Code Playgroud)

这显然是一个错误!如果你想只使用结果randomRIO

getRandom x y = randomRIO (x, y)
Run Code Online (Sandbox Code Playgroud)

工作良好.另外,如果你只想要一个随机数,

getRandom :: IO Integer
getRandom = randomIO
Run Code Online (Sandbox Code Playgroud)

作品.

  • @nevero getRandom返回一个`IO Int`,因为不纯的动作留在IO monad中.我建议阅读真实世界haskell的"IO"章节 (2认同)