2017-11-07 4 views
1

이것은 간단한 질문처럼 보입니다. 분명히 뭔가 빠져있을 수도 있지만 임의의 바이트를 반환하는 Elixir에서 함수를 만드는 법을 알 수는 없습니다. 다음과 같은 것을 원합니다 :엘 릭실에서 임의의 바이트 생성하기

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