Haskell 生成随机GLfloat值

Haskell 生成随机GLfloat值,haskell,Haskell,如何在Haskell中生成随机GLfloat值 Random GLfloat没有实例声明。如果没有实例,则创建一个实例。这是他们教你的第一件事 有很多方法,但最简单的方法可能是生成一种足够的分辨率,然后将其转换为GLfloat: instance Random GLfloat where random g = let f :: Double (f,g2) = random g in (fromRational (toRationa

如何在Haskell中生成随机GLfloat值


Random GLfloat没有实例声明。

如果没有实例,则创建一个实例。这是他们教你的第一件事

有很多方法,但最简单的方法可能是生成一种足够的分辨率,然后将其转换为GLfloat:

instance Random GLfloat where
    random g = 
        let f :: Double
            (f,g2) = random g
        in (fromRational (toRational f), g2)

Double
应该足够了,因为这是一个64位浮点值,而
GLFloat
(包装
CFloat
)是一个32位浮点值<代码>浮点应该足够了,但我对浮点的细节还不够精通,无法确定这对所有平台都是正确的。

另请参见
realToFrac
,它被定义为
fromRational.torional
,但专门用于普通强制转换,因为在浮动和理性之间转换是相当昂贵的。