Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 如何获得由信号确定的范围内的随机值?_Random_Elm - Fatal编程技术网

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