anchor.diff:  -spec uniform_s(N :: pos_integer(), S :: emprng_state()) ->
         {pos_integer(), NewS :: emprng_state()}.
   
  +uniform_s(N, S) when is_integer(N), N >= 1 ->
  +    {Alg, AS} = S,
  +    {X, AS2} = Alg:uniform_s(N, AS),
  +    {X, {Alg, AS2}}.
   
  
positive.code: %% Note: the type of the values depends on the algorithm handler.
  %% (new function)
  
  -spec seed(X :: emprng_alg_state(), Alg :: emprng_alg_handler()) ->
        undefined | emprng_state().
  
  seed(X, Alg) ->
      seed_put({?DEFAULT_ALG_HANDLER,
              % No type checking on X
               X}).
  
  %%% uniform/0, uniform/1, uniform_s/1, uniform_s/2 are all
  %%% uniformly distributed random numbers.
  
negative.code: 
  -spec uniform_s(S :: emprng_state()) -> {float(), NewS :: emprng_state()}.
  
  uniform_s(S) ->
      {Alg, AS} = S,
      {X, AS2} = Alg:uniform_S(AS),
      {X, {Alg, AS2}}.
  
  %% uniform_s/2: given an integer N >= 1 and a state, uniform_s/2
  %% uniform_s/2 returns a random integer X where 1 =< X =< N,
  %% and a new state.
  