Erlang生成随机二进制

时间:2016-04-23 19:03:52

标签: random erlang

在给定多个位的情况下生成随机二进制对象的最有效方法是什么?我理解crypto:rand_bytes函数是一个选项,但位数不一定是8的乘法。

2 个答案:

答案 0 :(得分:6)

rand_bits(Bits) ->
    Bytes = (Bits + 7) div 8,
    <<Result:Bits/bits, _/bits>> = crypto:rand_bytes(Bytes),
    Result.

答案 1 :(得分:1)

您将能够做到的一种方式是:

<<(rand:uniform(MaxNum)):(rand:uniform(MaxBits))>>

如果您希望使用加密模块,也可以这样:

<<(crypto:rand_uniform(MinNum, MaxNum)):(crypto:rand_uniform(MinBits, MaxBits))>>