如何为haskell俄罗斯方块游戏创建随机数生成器函数

如何为haskell俄罗斯方块游戏创建随机数生成器函数,haskell,tetris,Haskell,Tetris,我的问题很直截了当,我想在haskell代码中有一个函数,如下所示:我调用它,它会返回一个随机整数。我用它根据生成的数字生成Tetrominos,有什么想法吗 编辑,下面是我的代码是如何工作的,现在看起来 代码类似于: 重点是我自己制作的数据结构,其实并不重要。 使用unsafePerform的问题是每次都重复相同的数字 getRandomInt :: Int getRandomInt = unsafePerformIO (getStdRandom (randomR (1, 7))) getR

我的问题很直截了当,我想在haskell代码中有一个函数,如下所示:我调用它,它会返回一个随机整数。我用它根据生成的数字生成Tetrominos,有什么想法吗

编辑,下面是我的代码是如何工作的,现在看起来 代码类似于:

重点是我自己制作的数据结构,其实并不重要。 使用unsafePerform的问题是每次都重复相同的数字

getRandomInt :: Int
getRandomInt = unsafePerformIO (getStdRandom (randomR (1, 7)))

getRandomTetromino :: [Point]
getRandomTetromino = getRT getRandomInt

getRT :: Int -> [Point]
getRT c
    | c == 1 = [ Point 5 1 "T", Point 5 0 "T", Point 6 1 "T", Point 4 1 "T"]
    | c == 2 = [ Point 5 1 "Z", Point 5 0 "Z", Point 4 1 "Z", Point 4 2 "Z"]
    | c == 3 = [ Point 5 1 "I", Point 5 0 "I", Point 5 2 "I", Point 5 3 "I"]
    | c == 4 = [ Point 5 1 "L", Point 6 1 "L", Point 4 1 "L", Point 6 0 "L"]
    | c == 5 = [ Point 5 1 "J", Point 5 0 "J", Point 6 0 "J", Point 5 2 "J"]
    | c == 6 = [ Point 5 1 "S", Point 5 0 "S", Point 6 0 "S", Point 4 1 "S"]
    | c == 7 = [ Point 5 0 "O", Point 6 0 "O", Point 6 1 "O", Point 5 1 "O"]

您可以使用以下方法执行此操作:

import System.Random
import Control.Monad (replicateM)

main = replicateM 10 (randomIO :: IO Int) >>= print 

有没有办法将这些整数存储在变量中?不要用注释提问。请再提一个问题。