代码之家  ›  专栏  ›  技术社区  ›  t56k

用随机和唯一的数字创建列表

  •  3
  • t56k  · 技术社区  · 6 年前

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

    end_list = for x <- 0..10, do: :rand.uniform(50)
    > [41, 9, 8, 50, 49, 1, 1, 7, 7, 47, 20]
    

    我能写些什么来表达“如果还没有”的条件 do: 街区?

    2 回复  |  直到 6 年前
        1
  •  6
  •   Sheharyar    6 年前

    我得到了这一条航线 Stream.repeatedly/1 从其他地方:

    Stream.repeatedly(fn -> :rand.uniform(50) end) |> Stream.uniq |> Enum.take(10)
    
        2
  •  3
  •   Paweł Dawczak    6 年前

    你可以使用 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]