【发布时间】:2017-11-07 10:01:08
【问题描述】:
这似乎是一个简单的问题,我可能遗漏了一些明显的东西,但我不知道如何在 Elixir 中创建一个返回随机字节的函数。我想要类似的东西:
def random_byte do
<<0>>..<<255>> |> Enum.random()
end
但是您不能使用二进制文件来确定范围。我可以手动输入所有 256 个的列表,但我希望有更好的方法。
【问题讨论】:
标签: elixir
这似乎是一个简单的问题,我可能遗漏了一些明显的东西,但我不知道如何在 Elixir 中创建一个返回随机字节的函数。我想要类似的东西:
def random_byte do
<<0>>..<<255>> |> Enum.random()
end
但是您不能使用二进制文件来确定范围。我可以手动输入所有 256 个的列表,但我希望有更好的方法。
【问题讨论】:
标签: elixir
你的意思是一个字节的二进制文件?你可以把Enum.random(0..255)放在<<>>里面:
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"
【讨论】:
(0..255) |> Enum.random() |> <<>> :)