Dzieli on zbiór liczb naturalnych na przedziały o długościach dalej każdy z nich w identyczny sposób dzieli na podprzedziały o założonych proporcjach.

Kod może się również rozpocząć od kwantyzacji rozkładu prawdopodobieństwa do ułamków o mianowniku gdzie jest wybrane (zwykle 8-12 bitów): dla pewnych liczb naturalnych (wielkości podprzedziałów).

Żeby tak było, należy oznaczyć dystrybuantę:

Dla należy oznaczyć funkcję (zazwyczaj stablicowaną):

symbol(y) = s takie że CDF[s] <= y < CDF[s+1].

Teraz funkcja kodująca rANS to:

C(x,s) = (floor(x / f[s]) << n) + (x % f[s]) + CDF[s]

Dekodująca:

s = symbol(x & mask)

D(x) = (f[s] * (x >> n) + (x & mask ) – CDF[s], s)

W ten sposób koduje ciąg symboli do dużej liczby naturalnej Żeby uniknąć arytmetyki na dużych liczbach, wykorzystuje się wersję strumieniową: wymusza się poprzez renormalizację – wysyłanie do (lub z) strumienia najmniej znaczących bitów (zazwyczaj i są potęgami 2).

W wariancie rANS liczba (stan) jest na przykład 32-bitowa. Dla 16-bitowej renormalizacji dekoder uzupełnia najmniej znaczące bity ze strumienia, kiedy zachodzi taka potrzeba:

if(x < (1 << 16)) x = (x << 16) + read16bits()