【发布时间】:2018-12-25 13:13:36
【问题描述】:
我有一个应用程序,我想在读取 json 后三次在 init 上生成 5 个唯一数字的列表。所以基本上我想得到类似 [31, 59, 62, 72, 2, 16, 2, 38, 94, 15, 55, 46, 83, 2, 10] 的东西。我的挑战是我是函数式编程和榆树的新手,我有点迷茫。所以我知道 Random.generate 需要一个 msg 和一个生成器并返回一个 cmd 消息,它主要用于更新函数,但这不是我需要的,因为它是一个辅助函数,不需要与客户端通信.我认为它可以在init中使用,但我不知道如何。同样,我的函数是递归的,我不知道如何将这个逻辑与 Random.generate 递归地应用。
我知道我的代码不起作用,我已经尝试过了,因为 Random.int 不会生成随机数,而是生成的一种类型,但我仍然不知道如何应用它来获得我想要的。
recursion : Int -> List a -> List number
recursion a b =
if List.length b > 5
then b
else
let
rand = Random.int 0 a
in
if(List.member rand b)
then recursion a b
else
recursion a (rand :: b)
可以通过以下方式调用:
recursion 50 []
我想生成一个包含 5 个唯一随机 3 次的列表/数组。
【问题讨论】:
标签: elm