anchor.diff:  
   
   -spec rand_seed(binary()) -> ok.
  -rand_seed(Seed) ->
  +rand_seed(Seed) when is_binary(Seed) ->
       rand_seed_nif(Seed).
   
   rand_seed_nif(_Seed) -> ?nif_stub.
  
positive.code: -spec strong_rand_bytes(non_neg_integer()) -> binary().
  -spec rand_seed() -> rand:state().
  -spec rand_seed_s() -> rand:state().
  -spec rand_uniform(crypto_integer(), crypto_integer()) ->
  			  crypto_integer().
  
  
negative.code:     rand:seed(rand_seed_s()).
  
  rand_seed_s() ->
      rand_seed_alg_s(?MODULE).
  
  rand_seed_alg(Alg) ->
      rand:seed(rand_seed_alg_s(Alg)).
      
  -define(CRYPTO_CACHE_BITS, 56).
  rand_seed_alg_s(?MODULE) ->
      {#{ type => ?MODULE,
          bits => 64,
          next => fun ?MODULE:rand_plugin_next/1,
          uniform => fun ?MODULE:rand_plugin_uniform/1,
          uniform_n => fun ?MODULE:rand_plugin_uniform/2},
       no_seed};
  rand_seed_alg_s(crypto_cache) ->
      {#{ type => crypto_cache,
          bits => ?CRYPTO_CACHE_BITS,
          next => fun ?MODULE:rand_cache_plugin_next/1},
       <<>>}.
  
  rand_plugin_next(Seed) ->
      {bytes_to_integer(strong_rand_range(1 bsl 64)), Seed}.
  