LendAndRegret/node_modules/es-toolkit/dist/compat/math/random.mjs
2026-05-02 17:27:43 +08:00

71 lines
1.8 KiB
JavaScript

import { clamp } from './clamp.mjs';
import { random as random$1 } from '../../math/random.mjs';
import { randomInt } from '../../math/randomInt.mjs';
function random(...args) {
let minimum = 0;
let maximum = 1;
let floating = false;
switch (args.length) {
case 1: {
if (typeof args[0] === 'boolean') {
floating = args[0];
}
else {
maximum = args[0];
}
break;
}
case 2: {
if (typeof args[1] === 'boolean') {
maximum = args[0];
floating = args[1];
}
else {
minimum = args[0];
maximum = args[1];
}
}
case 3: {
if (typeof args[2] === 'object' && args[2] != null && args[2][args[1]] === args[0]) {
minimum = 0;
maximum = args[0];
floating = false;
}
else {
minimum = args[0];
maximum = args[1];
floating = args[2];
}
}
}
if (typeof minimum !== 'number') {
minimum = Number(minimum);
}
if (typeof maximum !== 'number') {
minimum = Number(maximum);
}
if (!minimum) {
minimum = 0;
}
if (!maximum) {
maximum = 0;
}
if (minimum > maximum) {
[minimum, maximum] = [maximum, minimum];
}
minimum = clamp(minimum, -Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);
maximum = clamp(maximum, -Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);
if (minimum === maximum) {
return minimum;
}
if (floating) {
return random$1(minimum, maximum + 1);
}
else {
return randomInt(minimum, maximum + 1);
}
}
export { random };