Random 创建带有随机和唯一编号的列表

Random 创建带有随机和唯一编号的列表,random,erlang,elixir,unique,Random,Erlang,Elixir,Unique,我试图列出一个特定长度的唯一的随机整数列表 end_list = for x <- 0..10, do: :rand.uniform(50) > [41, 9, 8, 50, 49, 1, 1, 7, 7, 47, 20] end_list=x[41,9,8,50,49,1,1,7,47,20] 我可以写些什么来传达do:块中的“if not ready”(如果尚未存在)条件?您可以使用它,它仅在元素不存在时才会添加元素。最后,您可以将地图集转换为列表 类似这样的方法会奏效: m

我试图列出一个特定长度的唯一的随机整数列表

end_list = for x <- 0..10, do: :rand.uniform(50)
> [41, 9, 8, 50, 49, 1, 1, 7, 7, 47, 20]
end_list=x[41,9,8,50,49,1,1,7,47,20]
我可以写些什么来传达
do:
块中的“if not ready”(如果尚未存在)条件?

您可以使用它,它仅在元素不存在时才会添加元素。最后,您可以将地图集转换为列表

类似这样的方法会奏效:

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]

ms=for x我从其他地方获得了这一行:

Stream.repeative(fn->:rand.uniform(50)end)|>Stream.uniq |>Enum.take(10)

I这是一个很好的解决方案,但它不会在每次迭代中得到10个元素。这是正确的答案,它在每次迭代中返回10个元素,并且每个项目都是唯一的。