TypeScript:
Satunnaislukujen generointi
Kuinka:
TypeScriptissä voit luoda satunnaislukuja globaalin Math
-objektin avulla. Alla on joitakin käytännön esimerkkejä, jotka osoittavat, kuinka tuottaa satunnaislukuja eri tarpeisiin.
Perussatunnaisluvun tuottaminen
Perussatunnaisen desimaaliluvun tuottamiseksi välillä 0 (mukaan lukien) ja 1 (ei mukaan lukien) käytetään Math.random()
-metodia. Tämä ei vaadi lisäkäsittelyä:
const randomNumber = Math.random();
console.log(randomNumber);
Tämä saattaa tulostaa arvon kuten 0.8995452185604771
.
Satunnaisen kokonaisluvun tuottaminen kahden arvon välillä
Kun tarvitset kokonaislukua kahden tietyn arvon välillä, yhdistät Math.random()
-metodin ja jonkin verran aritmetiikkaa:
function getRandomInt(min: number, max: number): number {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
const randomInt = getRandomInt(1, 10);
console.log(randomInt);
Tämä saattaa tulostaa kokonaisluku arvon 1 ja 10 välillä, kuten 7
.
Uniikin tunnisteen luominen
Satunnaislukuja voidaan yhdistää muihin menetelmiin uniikkien tunnisteiden luomiseksi, esimerkiksi yksinkertainen UUID-generaattorin koodinpätkä:
function generateUUID(): string {
return 'xxxxyxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
const r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
const uuid = generateUUID();
console.log(uuid);
Tämä luo merkkijonon, joka muistuttaa UUID:tä, kuten 110e8400-e29b-41d4-a716-446655440000
.
Syväsukellus
Päämenetelmä satunnaislukujen generointiin JavaScriptissä ja näin ollen TypeScriptissä, Math.random()
, nojaa pseudo-satunnaislukugeneraattoriin (PRNG). On tärkeää huomata, että vaikka tulokset saattavat vaikuttaa satunnaisilta, ne generoidaan deterministisellä algoritmilla perustuen alkuperäiseen siemenarvoon. Siksi Math.random()
-metodilla tuotetut luvut eivät ole todella satunnaisia ja niitä ei tulisi käyttää kryptografisiin tarkoituksiin.
Kryptografisesti turvatut satunnaisluvut, Web Crypto API tarjoaa crypto.getRandomValues()
-metodin, joka on saatavilla Web Crypto -standardia tukevissa ympäristöissä, mukaan lukien modernit selaimet ja Node.js (käyttäen crypto
-moduulia). Tässä on nopea esimerkki sen käytöstä TypeScriptissä turvallisen satunnaisluvun generointiin tietyllä välillä:
function secureRandom(min: number, max: number): number {
const array = new Uint32Array(1);
window.crypto.getRandomValues(array);
return min + (array[0] % (max - min + 1));
}
const secureRandNum = secureRandom(1, 100);
console.log(secureRandNum);
Tämä menetelmä tarjoaa vahvemman satunnaisuuden tason ja sopii paremmin turvallisuusherkkiin sovelluksiin. Se on kuitenkin myös resurssi-intensiivisempi ja ei välttämättä ole tarpeellinen yksinkertaisempia tehtäviä, kuten yksinkertaisia simulaatioita tai ei-kriittistä satunnaisarvojen generointia varten.