-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrandom.ts
More file actions
33 lines (29 loc) · 834 Bytes
/
random.ts
File metadata and controls
33 lines (29 loc) · 834 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* ### random(lower, upper, float?)
*
* Generate a random number between `lower` and `upper` (inclusive).
* If `float` is true or `lower` or `upper` is a float, a float is returned instead of an integer.
*
* ```js
* flocky.random(1, 10)
* // -> 8
*
* flocky.random(1, 20, true)
* // -> 14.94849340769861
*
* flocky.random(2.5, 3.5)
* // -> 3.2341312319841373
* ```
*/
export function random(lower: number, upper: number, float?: boolean): number {
if (float || lower % 1 || upper % 1) {
return randomFloat(lower, upper)
}
return randomInteger(lower, upper)
}
function randomFloat(lower: number, upper: number): number {
return Math.random() * (upper - lower) + lower
}
function randomInteger(lower: number, upper: number): number {
return Math.floor(Math.random() * (upper - lower + 1) + lower)
}