artdaq_node_server  v1_00_08
 All Classes Namespaces Files Variables Pages
random.js
1 var baseRandom = require('./_baseRandom'),
2  isIterateeCall = require('./_isIterateeCall'),
3  toFinite = require('./toFinite');
4 
6 var freeParseFloat = parseFloat;
7 
8 /* Built-in method references for those with the same name as other `lodash` methods. */
9 var nativeMin = Math.min,
10  nativeRandom = Math.random;
11 
43 function random(lower, upper, floating) {
44  if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
45  upper = floating = undefined;
46  }
47  if (floating === undefined) {
48  if (typeof upper == 'boolean') {
49  floating = upper;
50  upper = undefined;
51  }
52  else if (typeof lower == 'boolean') {
53  floating = lower;
54  lower = undefined;
55  }
56  }
57  if (lower === undefined && upper === undefined) {
58  lower = 0;
59  upper = 1;
60  }
61  else {
62  lower = toFinite(lower);
63  if (upper === undefined) {
64  upper = lower;
65  lower = 0;
66  } else {
67  upper = toFinite(upper);
68  }
69  }
70  if (lower > upper) {
71  var temp = lower;
72  lower = upper;
73  upper = temp;
74  }
75  if (floating || lower % 1 || upper % 1) {
76  var rand = nativeRandom();
77  return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
78  }
79  return baseRandom(lower, upper);
80 }
81 
82 module.exports = random;