diff --git a/Random.hs b/Random.hs
--- a/Random.hs
+++ b/Random.hs
@@ -6,8 +6,10 @@
 import Control.Monad.Trans.Reader
 import qualified Control.Monad.Trans.State as M
 import Data.Primitive.MutVar
+import Data.Semigroup
 import Data.Tuple (swap)
 import Data.Void
+import Numeric.Natural
 
 import Util
 
@@ -17,9 +19,18 @@
     type Native g
     uniformNative :: M.State g (Native g)
     uniformNativeM :: PrimMonad m => ReaderT (Mut (PrimState m) g) m (Native g)
+    skip :: Natural -> g -> g
+    skipM :: PrimMonad m => Natural -> ReaderT (Mut (PrimState m) g) m ()
+
     default uniformNativeM :: (Mut (PrimState m) g ~ MutVar (PrimState m) g,
                                PrimMonad m) => ReaderT (Mut (PrimState m) g) m (Native g)
     uniformNativeM = ReaderT $ flip atomicModifyMutVar $ swap . M.runState uniformNative
+
+    skip n = appEndo . stimes n . Endo $ M.execState uniformNative
+
+    default skipM :: (Mut (PrimState m) g ~ MutVar (PrimState m) g,
+                      PrimMonad m) => Natural -> ReaderT (Mut (PrimState m) g) m ()
+    skipM = flip replicateA_ (() <$ uniformNativeM)
 
 class Split g where
     split :: g -> (g, g)
diff --git a/Util.hs b/Util.hs
--- a/Util.hs
+++ b/Util.hs
@@ -1,12 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE AllowAmbiguousTypes #-}
 
 module Util where
 
+import Control.Applicative
 import qualified Data.List as L
+import Data.Semigroup
 import Numeric.Natural
 
 replicateA :: Applicative p => Natural -> p a -> p [a]
 replicateA n = sequenceA . L.genericReplicate n
+
+replicateA_ :: Applicative p => Natural -> p () -> p ()
+replicateA_ n = unAp . stimes n . Ap
+
+newtype Ap p a = Ap { unAp :: p a } deriving (Functor, Applicative)
+instance (Applicative p, Semigroup a) => Semigroup (Ap p a) where (<>) = liftA2 (<>)
+instance (Applicative p, Semigroup a, Monoid a) => Monoid (Ap p a) where
+    mempty = pure mempty
+    mappend = (<>)
 
 card :: ∀ a . (Bounded a, Enum a) => Natural
 card = L.genericLength [minBound @a..]
diff --git a/random-class.cabal b/random-class.cabal
--- a/random-class.cabal
+++ b/random-class.cabal
@@ -1,5 +1,5 @@
 name:                random-class
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            Class of random value generation
 -- description:         
 license:             BSD3
