/
Random.ts
47 lines (41 loc) · 1.51 KB
/
Random.ts
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Effects
*/
import { Point3d, Range1d, Range3d } from "@itwin/core-geometry";
/** Generate integer in [min, max].
* @beta
*/
export function randomInteger(min: number, max: number): number {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
/** Generate random integer in [range.low, range.high].
* @beta
*/
export function randomIntegerInRange(range: Range1d): number {
return Math.floor(Math.random() * (range.high - range.low + 1)) + range.low;
}
/** Generate random floating-point number in [min, max).
* @beta
*/
export function randomFloat(min: number, max: number): number {
return Math.random() * (max - min) + min;
}
/** Generate random floating-point number in [range.low, range.high).
* @beta
*/
export function randomFloatInRange(range: Range1d): number {
return randomFloat(range.low, range.high);
}
/** Generate a random position in the specified range.
* @beta
*/
export function randomPositionInRange(range: Range3d): Point3d {
const x = randomFloat(range.low.x, range.high.x);
const y = randomFloat(range.low.y, range.high.y);
const z = randomFloat(range.low.z, range.high.z);
return new Point3d(x, y, z);
}