Random 如何获得由信号确定的范围内的随机值?
首先是一些代码:Random 如何获得由信号确定的范围内的随机值?,random,elm,Random,Elm,首先是一些代码: import Random import Window writeRandom x = lift asText (Random.range 0 x <| every second) upperLimit = 300 -- upperLimit = Window.width -- How can i use this instead? main = writeRandom upperLimit 我也不确定电梯的反面(较低?)是否存在,甚至说不通 谢谢你认为lower
import Random
import Window
writeRandom x = lift asText (Random.range 0 x <| every second)
upperLimit = 300
-- upperLimit = Window.width -- How can i use this instead?
main = writeRandom upperLimit
我也不确定电梯的反面(较低?)是否存在,甚至说不通
谢谢你认为lower的反义词没有意义是正确的。
在这种情况下,内置随机库是内置的,因为它是本地JavaScript调用的包装器。这就是
信号
返回类型保持代码纯净的原因。即便如此,它仍然是
要获得所需的随机范围,需要使用不同的随机数生成器。几天前刚刚出版的一本书可能会满足你的需要。您可以自己或工具从GitHub中检查它
您的代码将类似(未经测试!):
导入窗口
导入生成器
进口发电机。标准为GStd
随机种子=12346789
writeRandom:Signal Int->Signal Element
writeRandom x=
让我们更新high(uGen)=Generator.int32Range(0,high)gen
开始=(0,GStd.generator)
输入=采样(每秒)x
结果=fst感谢您的回复。我很快就会试试的,它很管用。我花了几天的时间让我的环境设置来测试它。
Type Error: 'main' must have type Element or (Signal Element).
Instead 'main' has type:
Signal (Signal Element)
import Window
import Generator
import Generator.Standard as GStd
randomSeed = 12346789
writeRandom : Signal Int -> Signal Element
writeRandom x =
let update high (_, gen) = Generator.int32Range (0,high) gen
start = (0, GStd.generator randomSeed)
input = sampleOn (every second) x
result = fst <~ foldp update start input
in lift asText result
upperLimit = Window.width
main = writeRandom upperLimit