Random Erlang生成随机二进制

Random Erlang生成随机二进制,random,erlang,Random,Erlang,在给定位数的情况下,生成随机二进制对象的最有效方法是什么?我知道crypto:rand_bytes函数是一个选项,但位计数不一定是8的倍数 您能够做到这一点的一种方法是: <<(rand:uniform(MaxNum)):(rand:uniform(MaxBits))>> 或者,如果您希望使用加密模块,请使用相同的方法: <<(crypto:rand_uniform(MinNum, MaxNum)):(crypto:rand_uniform(MinBit

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

您能够做到这一点的一种方法是:

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

或者,如果您希望使用加密模块,请使用相同的方法:

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

随机位(位)->
字节=(位+7)第8部分,
=加密:随机字节(字节),
结果。

如果它是随机的,那么您可以随时剪切不必要的位。不会有太大的区别。@Amiramix请问我怎样才能做到这一点?
rand_bits(Bits) ->
    Bytes = (Bits + 7) div 8,
    <<Result:Bits/bits, _/bits>> = crypto:rand_bytes(Bytes),
    Result.