diff --git a/random-fu.cabal b/random-fu.cabal
--- a/random-fu.cabal
+++ b/random-fu.cabal
@@ -1,5 +1,5 @@
 name:                   random-fu
-version:                0.2.5.0
+version:                0.2.6.0
 stability:              provisional
 
 cabal-version:          >= 1.6
@@ -88,6 +88,7 @@
                         Data.Random.List
                         Data.Random.RVar
                         Data.Random.Sample
+                        Data.Random.Vector
   if flag(base4_2)
     build-depends:      base >= 4.2 && <5
   else
diff --git a/src/Data/Random/Distribution/Uniform.hs b/src/Data/Random/Distribution/Uniform.hs
--- a/src/Data/Random/Distribution/Uniform.hs
+++ b/src/Data/Random/Distribution/Uniform.hs
@@ -22,6 +22,7 @@
     , floatUniform
     , doubleUniform
     , fixedUniform
+    , enumUniform
     
     , boundedStdUniform
     , boundedEnumStdUniform
@@ -33,6 +34,7 @@
     , boundedStdUniformCDF
     , realStdUniformCDF
     , realUniformCDF
+    , enumUniformCDF
     ) where
 
 import Data.Random.Internal.TH
diff --git a/src/Data/Random/Vector.hs b/src/Data/Random/Vector.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Random/Vector.hs
@@ -0,0 +1,10 @@
+module Data.Random.Vector(randomElement) where
+
+import           Data.Random.RVar
+import           Data.Random.Distribution.Uniform
+import qualified Data.Vector  as V
+import           Control.Applicative
+
+-- | Take a random element of a vector.
+randomElement :: V.Vector a -> RVar a
+randomElement words = (words V.!) <$> uniform 0 (V.length words - 1)
