我正在尝试创建一个指定长度的唯一随机整数列表。
end_list = for x <- 0..10, do: :rand.uniform(50)
> [41, 9, 8, 50, 49, 1, 1, 7, 7, 47, 20]
在do:
块中,我应该写什么来表达“如果尚未存在”的条件?
我从别处得到了这个使用Stream.repeatedly/1
的一行代码:
Stream.repeatedly(fn -> :rand.uniform(50) end) |> Stream.uniq |> Enum.take(10)
类似这样的代码可以工作:
ms = for x <- 0..10, into: MapSet.new(), do: :rand.uniform(50)
end_list = MapSet.to_list(ms)
[2, 10, 15, 16, 19, 28, 34, 43, 48]