使用随机且唯一的数字创建列表
Create list with random and unique numbers
我正在尝试制作一个特定长度的唯一随机整数列表。
end_list = for x <- 0..10, do: :rand.uniform(50)
> [41, 9, 8, 50, 49, 1, 1, 7, 7, 47, 20]
我可以写什么来传达 do:
块中的 "if not already present" 条件?
您可以使用 MapSet,它只会在元素不存在时添加该元素。然后,最后,您可以将 MapSet 转换为列表。
像这样的东西会起作用:
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]
我从其他地方得到了使用 Stream.repeatedly/1
的单线:
Stream.repeatedly(fn -> :rand.uniform(50) end) |> Stream.uniq |> Enum.take(10)
我正在尝试制作一个特定长度的唯一随机整数列表。
end_list = for x <- 0..10, do: :rand.uniform(50)
> [41, 9, 8, 50, 49, 1, 1, 7, 7, 47, 20]
我可以写什么来传达 do:
块中的 "if not already present" 条件?
您可以使用 MapSet,它只会在元素不存在时添加该元素。然后,最后,您可以将 MapSet 转换为列表。
像这样的东西会起作用:
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]
我从其他地方得到了使用 Stream.repeatedly/1
的单线:
Stream.repeatedly(fn -> :rand.uniform(50) end) |> Stream.uniq |> Enum.take(10)