         list.shuffle()
         return list
     }
-    
-    
-    /// Randomly selects an element from self and returns it.
-    ///
-    /// - returns: An element that was randomly selected from the array.
-    public func random() -> Element {
-        let arrayCount = UInt32(self.count)
-        #if os(Linux)
-            let random = Int(Glibc.random()) % Int(arrayCount)
-            let randomNumber = Int(random)
-            return self[randomNumber]
-        #else
-            let random = arc4random_uniform(arrayCount)
-            let randomNumber = Int(random)
-            return self[randomNumber]
-        #endif
-    }
-    
-    
-    /// Removes the element from self that is passed in.
-    /// 
-    /// - parameter object: The element that is removed from self.
-    public mutating func remove(_ object: Element) {
-        var array: [String] = []
-        for i in self {
-            array.append("\(i)")
-        }
-        let item = array.index(of: "\(object)")
-        if let obj = item {
-            self.remove(at: obj)
-        }
-    }
 }

        } else {
            return nil
        }
    }
    
    /// Simulates the array as a circle. When it is out of range, begins again.
    ///
    /// - Parameter index: The index.
    /// - Returns: Returns the object at a given index.
    public func circleObject(at index: Int) -> Element {
        return self[self.superCircle(at: index, size: self.count)]
    }
    
    /// Get the index as a circle.

public extension Array {
    // MARK: - Functions
    
    /// Simulates the array as a circle. When it is out of range, begins again.
    ///
    /// - Parameter index: The index.
    /// - Returns: Returns the object at a given index.
    public func circleObject(at index: Int) -> Element {
        return self[self.superCircle(at: index, size: self.count)]
    }
    
    /// Randomly selects an element from self and returns it.
    ///
    /// - returns: An element that was randomly selected from the array.
    public func random() -> Element {
        let arrayCount = UInt32(self.count)
        #if os(Linux)
            let random = Int(Glibc.random()) % Int(arrayCount)
            let randomNumber = Int(random)
            return self[randomNumber]
        #else
            let random = arc4random_uniform(arrayCount)
            let randomNumber = Int(random)
            return self[randomNumber]
        #endif
    }
    
    
    /// Removes the element from self that is passed in.
    /// 
    /// - parameter object: The element that is removed from self.
    public mutating func remove(_ object: Element) {
        var array: [String] = []
        for i in self {
            array.append("\(i)")
        }
        let item = array.index(of: "\(object)")
        if let obj = item {
            self.remove(at: obj)
        }
    }
    
    /// Get the object at a given index in safe mode (nil if self is empty or out of range).
    ///
    /// - Parameter index: The index.
