     /// Generates a random `UInt32`.
     ///
     /// - returns: The next `UInt32` in the sequence
-    static func random() -> UInt32 {
+    public static func random() -> UInt32 {
         return generator.next()!
     }
 }

    /// - parameter length: The number of bytes of random data to return.
    ///
    /// - returns: The next `length` random bytes. Or nil if length <= 0.
    static func randomData(length: Int) -> NSData? {
        guard length > 0 else { return nil }
        // Finding a contiguous stretch of memory much longer than this might not be possible, especially on iOS
        precondition(length < 10485760, "Buffer would exceed 10mb")

    /// Generates a random `UInt64`.
    ///
    /// - returns: The next two `UInt32`'s in the sequence concatenated into a `UInt64`
    public static func random() -> UInt64 {
        let upper = UInt64(generator.next()!) << 32
        let lower = UInt64(generator.next()!)
        return upper + lower
