anchor.diff:      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}.
  +     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}.
  
positive.code: rand_plugin_uniform(Max, State) ->
      {bytes_to_integer(strong_rand_range(Max)) + 1, State}.
  
  
  strong_rand_range(Range) when is_integer(Range), Range > 0 ->
      BinRange = int_to_bin(Range),
  
negative.code: -spec strong_rand_bytes(non_neg_integer()) -> binary().
  -spec rand_seed() -> rand:state().
  -spec rand_seed_s() -> rand:state().
  -spec rand_seed_alg(Alg :: atom()) -> rand:state().
  -spec rand_seed_alg_s(Alg :: atom()) -> rand:state().
  -spec rand_uniform(crypto_integer(), crypto_integer()) ->
  			  crypto_integer().
  
  