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