code: function(arr, arg1, arg2) {
      var result = [], num, remove, single;
      if (isBoolean(arg1)) {
        remove = arg1;
      } else {
        num = arg1;
        remove = arg2;
      }
      if (isUndefined(num)) {
        num = 1;
        single = true;
      }
      if (!remove) {
        arr = arrayClone(arr);
      }
      num = min(num, arr.length);
      for (var i = 0, index; i < num; i++) {
        index = trunc(Math.random() * arr.length);
        result.push(arr[index]);
        arr.splice(index, 1);
      }
      return single ? result[0] : result;
    }
docs: *
  @method sample([num] = 1, [remove] = false)
  @returns Mixed
  @short Returns a random element from the array.
  @extra If [num] is passed, will return an array of [num] elements. If
  [remove] is true, sampled elements will also be removed from the
  array. [remove] can also be passed in place of [num].
  
  @example
  
  [1,2,3,4,5].sample()  -> // Random element
  [1,2,3,4,5].sample(1) -> // Array of 1 random element
  [1,2,3,4,5].sample(3) -> // Array of 3 random elements
  
  @param {number} [num]
  @param {boolean} [remove]
  
  *