2016-04-23 79 views
3

给定多个位,生成随机二进制对象的最有效方法是什么?据我所知,crypto:rand_bytes功能将是一种选择,但比特数不一定必须是8Erlang生成随机二进制

+0

如果它是随机的,那么你总是可以削减不必要的位。不会有太大的变化。 – Amiramix

+0

@Amiramix我将如何实现这一点呢? –

回答

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

的一种方式,你将能够做到这一点乘法是:

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

或者同样的方式如果你想使用的密码模块:

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