00001 var baseRandom = require('./_baseRandom'),
00002 isIterateeCall = require('./_isIterateeCall'),
00003 toFinite = require('./toFinite');
00004
00006 var freeParseFloat = parseFloat;
00007
00008
00009 var nativeMin = Math.min,
00010 nativeRandom = Math.random;
00011
00043 function random(lower, upper, floating) {
00044 if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
00045 upper = floating = undefined;
00046 }
00047 if (floating === undefined) {
00048 if (typeof upper == 'boolean') {
00049 floating = upper;
00050 upper = undefined;
00051 }
00052 else if (typeof lower == 'boolean') {
00053 floating = lower;
00054 lower = undefined;
00055 }
00056 }
00057 if (lower === undefined && upper === undefined) {
00058 lower = 0;
00059 upper = 1;
00060 }
00061 else {
00062 lower = toFinite(lower);
00063 if (upper === undefined) {
00064 upper = lower;
00065 lower = 0;
00066 } else {
00067 upper = toFinite(upper);
00068 }
00069 }
00070 if (lower > upper) {
00071 var temp = lower;
00072 lower = upper;
00073 upper = temp;
00074 }
00075 if (floating || lower % 1 || upper % 1) {
00076 var rand = nativeRandom();
00077 return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
00078 }
00079 return baseRandom(lower, upper);
00080 }
00081
00082 module.exports = random;