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.
// ONLINE-RUNNER:browser;
console.log( Math.random() ); // 0.9100486004606172
console.log( Math.random() ); // 0.8630710741089413
console.log( Math.random() ); // 0.8052253695967542
function randomInt(min, max) {
return min + Math.floor((max - min) * Math.random());
}
function randomFloat(min, max) {
return min + (max - min) * Math.random();
}
console.log( randomInt( 10, 20) ); // 12
console.log( randomInt(-10, 10) ); // -4
console.log( randomFloat( 10, 20) ); // 14.514897223860018
console.log( randomFloat(-10, 10) ); // -6.645075993092653
1. Dockumentacja
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. |
2. Przykłady niestandardowych metod losowych
2.1. Generowanie liczby losowej, zmiennoprzecinowej w zakresie (wyłączna wartość maksymalna)
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).
// ONLINE-RUNNER:browser;
/*
włącznie min (wynik może być równy wartości min)
wyłącznie max (wynik nie będzie miał maksymalnej wartości)
*/
function randomizeFloat(min, max) {
if (max == null) {
if (min <= 0) {
throw new Error('Max value must be positive.');
}
max = (min == null ? Number.MAX_VALUE : min);
min = 0.0;
}
if (min >= max) {
throw new Error("Incorrect arguments.");
}
return min + (max - min) * Math.random();
}
// Przykład:
console.log(randomizeFloat()); // 1.67319916301163e+308
console.log(randomizeFloat(5)); // 2.7593705936801918
console.log(randomizeFloat(10, 80)); // 37.54521514384005
console.log(randomizeFloat(-50, 50)); // -30.632843429520975
2.2. Generowanie liczby losowej, zmiennoprzecinowej w zakresie (włącznie z wartością maksymalną)
// ONLINE-RUNNER:browser;
// Genreowane wartości z przedziału <0, 1>
function randomizeValue() {
var value = (1 + 10E-16) * Math.random();
if (value > 1.0) {
return 1.0;
}
return value;
}
/*
włącznie min (wynik może być równy wartości min)
włącznie max (wynik nie będzie miał wartości maksymalnej)
*/
function randomizeFloat(min, max) {
if(max == null) {
max = (min == null ? Number.MAX_VALUE : min);
min = 0.0;
}
if(min >= max) {
throw new Error("Incorrect arguments.");
}
return min + (max - min) * randomizeValue();
}
// Przykład:
console.log(randomizeFloat()); // 1.1960373039711962e+308
console.log(randomizeFloat(5)); // 0.7663988388633522
console.log(randomizeFloat(10, 80)); // 67.81113931017913
console.log(randomizeFloat(-50, 50)); // -13.713816892801674
2.3. Generowanie liczby losowej, całkowitej w zakresie (wyłączając wartość maksymalną)
// ONLINE-RUNNER:browser;
/*
włącznie min (wynik może być równy wartości min)
wyłączając max (wynik nie będzie miał maksymalnej wartości)
*/
function randomizeInteger(min, max) {
if(max == null) {
max = (min == null ? Number.MAX_SAFE_INTEGER : min);
min = 0;
}
min = Math.ceil(min); // włącznie min
max = Math.floor(max); // wyłączając max
if(min > max - 1) {
throw new Error("Incorrect arguments.");
}
return min + Math.floor((max - min) * Math.random());
}
// Przykład:
console.log(randomizeInteger()); // 5547382624322139
console.log(randomizeInteger(5)); // 3
console.log(randomizeInteger(10, 80)); // 62
console.log(randomizeInteger(-50, 50)); // -8
2.4. Generowanie liczby losowej, całkowitej w zakresie (włącznie z wartością maksymalną)
// ONLINE-RUNNER:browser;
/*
włącznie min (wynik może być równy wartości min)
włącznie max (wynik nie będzie miał wartości maksymalnej)
*/
function randomizeInteger(min, max) {
if(max == null) {
max = (min == null ? Number.MAX_SAFE_INTEGER : min);
min = 0;
}
min = Math.ceil(min); // włączając min
max = Math.floor(max); // wyłączając max
if(min > max - 1) {
throw new Error("Incorrect arguments.");
}
return min + Math.floor((max - min + 1) * Math.random());
}
// Przykład:
console.log(randomizeInteger()); // 5918572174489812
console.log(randomizeInteger(5)); // 5
console.log(randomizeInteger(10, 80)); // 60
console.log(randomizeInteger(-50, 50)); // -15