Bump eslint from 8.28.0 to 8.29.0
[benchmarks-js.git] / random.js
1 const Benchmark = require('benny')
2 const { secureRandom } = require('./benchmark-utils')
3
4 const maximum = Number.MAX_SAFE_INTEGER
5
6 /**
7 * @param max
8 * @param min
9 * @returns
10 */
11 function getSecureRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) {
12 if (max < min || max < 0 || min < 0) {
13 throw new RangeError('Invalid interval')
14 }
15 max = Math.floor(max)
16 if (min != null && min !== 0) {
17 min = Math.ceil(min)
18 return Math.floor(secureRandom() * (max - min + 1)) + min
19 }
20 return Math.floor(secureRandom() * (max + 1))
21 }
22
23 /**
24 * @param max
25 * @param min
26 * @returns
27 */
28 function getRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) {
29 if (max < min || max < 0 || min < 0) {
30 throw new RangeError('Invalid interval')
31 }
32 max = Math.floor(max)
33 if (min != null && min !== 0) {
34 min = Math.ceil(min)
35 return Math.floor(Math.random() * (max - min + 1)) + min
36 }
37 return Math.floor(Math.random() * (max + 1))
38 }
39
40 Benchmark.suite(
41 'Random Integer Generator',
42 Benchmark.add('Secure random integer generator', () => {
43 getSecureRandomInteger(maximum)
44 }),
45 Benchmark.add('Random integer generator', () => {
46 getRandomInteger(maximum)
47 }),
48 Benchmark.cycle(),
49 Benchmark.complete(),
50 Benchmark.save({
51 file: 'random-integer-generator',
52 format: 'json',
53 details: true
54 }),
55 Benchmark.save({
56 file: 'random-integer-generator',
57 format: 'chart.html',
58 details: true
59 }),
60 Benchmark.save({
61 file: 'random-integer-generator',
62 format: 'table.html',
63 details: true
64 })
65 )