生成随机GLfloat值

时间:2012-05-03 04:00:15

标签: haskell

如何在Haskell中生成随机 GLfloat值?

Random GLfloat没有实例声明。

1 个答案:

答案 0 :(得分:2)

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

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

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

Double应该足够了,因为它是64位浮点值,而GLFloat(包裹CFloat)是32位浮点数。 Float应该足够了,但我对浮点的细节不够精通,以确保所有平台都适用。