2016-04-23 4 views
3

ビット数を指定してランダムバイナリオブジェクトを生成する最も効率的な方法は何ですか?私はcrypto:rand_bytes機能はオプションとなりますが、ビット数は必ずしもあなたがそれを行うことができるようになります8.Erlangはランダムバイナリを生成する

+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))>>