我想在游戏中随机产生一个敌人。 为此,我想检查每个帧是否有随机值[0..100] == 50
spawnEnemy :: World -> World
spawnEnemy (world@World { rndGen = r, enemies = e }) = world { enemies = if rand 0 100 == 50 then Enemy (rand (-200) 200, rand (-200) 200) 0 0 : e else e }
where
rand :: Float -> Float -> Float
rand l h = fst $ randomR (l, h) r
(这里是rndGen :: stdGen和敌人:: [Enemy])
但兰特似乎永远不会回归50。 我在这里做错了什么?
答案 0 :(得分:0)
将随机Float等于50的几率非常低,因为Floats不一定是整数。首先尝试使用floor
将随机数转换为积分。