PL
JavaScript - Math.random() - przykład metody z dokumentacją
2 points
Math.random()
ta funkcja zwraca zmiennoprzecinkową, pseudolosową liczbę z przedziału od [0,1), 0 (włącznie) do 1 (wyłącznie).
Na podstawie tej funkcji możemy uzyskać liczbę losową w zakresie, jak widać na poniższych przykładach.
xxxxxxxxxx
1
console.log( Math.random() ); // 0.9100486004606172
2
console.log( Math.random() ); // 0.8630710741089413
3
console.log( Math.random() ); // 0.8052253695967542
4
5
function randomInt(min, max) {
6
return min + Math.floor((max - min) * Math.random());
7
}
8
9
function randomFloat(min, max) {
10
return min + (max - min) * Math.random();
11
}
12
13
console.log( randomInt( 10, 20) ); // 12
14
console.log( randomInt(-10, 10) ); // -4
15
16
console.log( randomFloat( 10, 20) ); // 14.514897223860018
17
console.log( randomFloat(-10, 10) ); // -6.645075993092653
Składnia | Math.random() |
Parametry | Ta metoda nie przyjmuje żadnych argumentów. |
Wynik | Wartość liczby zmiennoprzecinkowej (wartość pierwotna). |
Opis | random jest metodą statyczną, która zwraca losową liczbę zmiennoprzecinkową z zakresu <0,1) - włącznie z 0 i wyłączając 1. |
Ten przykład pokazuje, losową liczbę z wyłącznym max. randomzeFloat()
metoda jest nadpisywana w następujący sposób:
randomzeFloat()
- generuje liczby w zakresie0
doNumber.MAX_VALUE
(wyłącznie),randomzeFloat(max)
- generuje liczby w zakresie0
domax
(wyłącznie) -max
wartość musi być dodatnia,randomzeFloat(min, max)
- generuje liczby w zakresiemin
domax
(wyłącznie).
xxxxxxxxxx
1
/*
2
włącznie min (wynik może być równy wartości min)
3
wyłącznie max (wynik nie będzie miał maksymalnej wartości)
4
*/
5
function randomizeFloat(min, max) {
6
if (max == null) {
7
if (min <= 0) {
8
throw new Error('Max value must be positive.');
9
}
10
11
max = (min == null ? Number.MAX_VALUE : min);
12
min = 0.0;
13
}
14
15
if (min >= max) {
16
throw new Error("Incorrect arguments.");
17
}
18
19
return min + (max - min) * Math.random();
20
}
21
22
// Przykład:
23
24
console.log(randomizeFloat()); // 1.67319916301163e+308
25
console.log(randomizeFloat(5)); // 2.7593705936801918
26
console.log(randomizeFloat(10, 80)); // 37.54521514384005
27
console.log(randomizeFloat(-50, 50)); // -30.632843429520975
2.2. Generowanie liczby losowej, zmiennoprzecinowej w zakresie (włącznie z wartością maksymalną)
Editxxxxxxxxxx
1
// Genreowane wartości z przedziału <0, 1>
2
function randomizeValue() {
3
var value = (1 + 10E-16) * Math.random();
4
5
if (value > 1.0) {
6
return 1.0;
7
}
8
9
return value;
10
}
11
12
/*
13
włącznie min (wynik może być równy wartości min)
14
włącznie max (wynik nie będzie miał wartości maksymalnej)
15
*/
16
function randomizeFloat(min, max) {
17
if(max == null) {
18
max = (min == null ? Number.MAX_VALUE : min);
19
min = 0.0;
20
}
21
22
if(min >= max) {
23
throw new Error("Incorrect arguments.");
24
}
25
26
return min + (max - min) * randomizeValue();
27
}
28
29
// Przykład:
30
31
console.log(randomizeFloat()); // 1.1960373039711962e+308
32
console.log(randomizeFloat(5)); // 0.7663988388633522
33
console.log(randomizeFloat(10, 80)); // 67.81113931017913
34
console.log(randomizeFloat(-50, 50)); // -13.713816892801674
xxxxxxxxxx
1
/*
2
3
włącznie min (wynik może być równy wartości min)
4
wyłączając max (wynik nie będzie miał maksymalnej wartości)
5
*/
6
function randomizeInteger(min, max) {
7
if(max == null) {
8
max = (min == null ? Number.MAX_SAFE_INTEGER : min);
9
min = 0;
10
}
11
12
min = Math.ceil(min); // włącznie min
13
max = Math.floor(max); // wyłączając max
14
15
if(min > max - 1) {
16
throw new Error("Incorrect arguments.");
17
}
18
19
return min + Math.floor((max - min) * Math.random());
20
}
21
22
// Przykład:
23
24
console.log(randomizeInteger()); // 5547382624322139
25
console.log(randomizeInteger(5)); // 3
26
console.log(randomizeInteger(10, 80)); // 62
27
console.log(randomizeInteger(-50, 50)); // -8
xxxxxxxxxx
1
/*
2
3
włącznie min (wynik może być równy wartości min)
4
włącznie max (wynik nie będzie miał wartości maksymalnej)
5
*/
6
function randomizeInteger(min, max) {
7
if(max == null) {
8
max = (min == null ? Number.MAX_SAFE_INTEGER : min);
9
min = 0;
10
}
11
12
min = Math.ceil(min); // włączając min
13
max = Math.floor(max); // wyłączając max
14
15
if(min > max - 1) {
16
throw new Error("Incorrect arguments.");
17
}
18
19
return min + Math.floor((max - min + 1) * Math.random());
20
}
21
22
// Przykład:
23
24
console.log(randomizeInteger()); // 5918572174489812
25
console.log(randomizeInteger(5)); // 5
26
console.log(randomizeInteger(10, 80)); // 60
27
console.log(randomizeInteger(-50, 50)); // -15