remeda
Version:
A utility library for JavaScript and Typescript.
31 lines (30 loc) • 1.59 kB
TypeScript
import { IntRangeInclusive } from "./IntRangeInclusive-Dd730-dm.js";
import { GreaterThan, GreaterThanOrEqual, IsEqual, IsNever, NonNegativeInteger, Or } from "type-fest";
//#region src/randomInteger.d.ts
type MaxLiteral = 1000;
type RandomInteger<From extends number, To extends number> = Or<IsNever<NonNegativeInteger<From>>, IsNever<NonNegativeInteger<To>>> extends true ? number : IsEqual<From, To> extends true ? From : GreaterThan<From, To> extends true ? never : GreaterThanOrEqual<To, MaxLiteral> extends true ? number : IntRangeInclusive<From, To>;
/**
* Generate a random integer between `from` and `to` (inclusive).
*
* !Important: This function uses [`Math.random()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random) under-the-hood, which has two major limitations:
* 1. It generates 2^52 possible values, so the bigger the range, the less
* uniform the distribution of values would be, and at ranges larger than that
* some values would never come up.
* 2. It is not cryptographically secure and should not be used for security
* scenarios.
*
* @param from - The minimum value.
* @param to - The maximum value.
* @returns The random integer.
* @signature
* R.randomInteger(from, to)
* @example
* R.randomInteger(1, 10) // => 5
* R.randomInteger(1.5, 2.6) // => 2
* @dataFirst
* @category Number
*/
declare function randomInteger<From extends number, To extends number>(from: From, to: To): RandomInteger<From, To>;
//#endregion
export { randomInteger };
//# sourceMappingURL=randomInteger-C68WjizG.d.ts.map