2017-11-07 8 views
1

これは簡単な質問のようですが、明らかに何かが不足しているかもしれませんが、ランダムなバイトを返すエリクシルの関数を作る方法を理解できません。エリクシールでランダムなバイトを生成

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

しかし、バイナリで範囲を作成することはできません。私は手動ですべての256のリストを手作業で入力することができましたが、もっと良い方法があると思っていました。

答えて

3

1バイトのバイナリを意味しますか? :crypto.strong_rand_bytes/1用いることであろう

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

別の方法を(遅いかもしれませんが、これも暗号化された安全なです):あなたは<<>>Enum.random(0..255)を置くことができます

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

をハハ、それほど明白私は決してだろうそれをやろうと考えていた。ありがとう! –

+1

もっと慣用的なエリクサー: '(0..255)|> Enum.random()|><<>>' :) – mudasobwa

関連する問題