【问题标题】:Generate a random byte in Elixir在 Elixir 中生成一个随机字节
【发布时间】:2017-11-07 10:01:08
【问题描述】:

这似乎是一个简单的问题,我可能遗漏了一些明显的东西,但我不知道如何在 Elixir 中创建一个返回随机字节的函数。我想要类似的东西:

def random_byte do
  <<0>>..<<255>> |> Enum.random()
end

但是您不能使用二进制文件来确定范围。我可以手动输入所有 256 个的列表,但我希望有更好的方法。

【问题讨论】:

    标签: elixir


    【解决方案1】:

    你的意思是一个字节的二进制文件?你可以把Enum.random(0..255)放在&lt;&lt;&gt;&gt;里面:

    iex(1)> <<Enum.random(0..255)>>
    <<181>>
    iex(2)> <<Enum.random(0..255)>>
    "x"
    

    另一种方法是使用:crypto.strong_rand_bytes/1可能会慢一些,但这也是加密安全的):

    iex(3)> :crypto.strong_rand_bytes(1)
    <<205>>
    iex(4)> :crypto.strong_rand_bytes(1)
    "7"
    

    【讨论】:

    • 哈哈,很明显,但我从来没有想过这样做。谢谢!
    • 更多惯用的 Elixir:(0..255) |&gt; Enum.random() |&gt; &lt;&lt;&gt;&gt; :)
    猜你喜欢
    • 2018-04-01
    • 2016-12-11
    • 1970-01-01
    • 2014-05-21
    • 2011-02-18
    • 2022-01-23
    • 2020-10-28
    • 2018-11-10
    相关资源
    最近更新 更多