这似乎是一个简单的问题,我可能会遗漏一些明显的东西,但我无法弄清楚如何在Elixir中创建一个返回随机字节的函数。我想要这样的东西:
def random_byte do
<<0>>..<<255>> |> Enum.random()
end
但是你不能用二进制文件制作一个范围。我可以手动输入所有256个列表,但我希望有更好的方法来实现它。
答案 0 :(得分:4)
你的意思是一个字节的二进制文件?您可以将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"