Generering av tilfeldige tall

TypeScript:
Generering av tilfeldige tall

Hvordan:

I TypeScript kan du generere tilfeldige tall ved å bruke det globale Math-objektet. Nedenfor er noen praktiske eksempler som demonstrerer hvordan du produserer tilfeldige tall for ulike behov.

Generering av et grunnleggende tilfeldig tall

For å generere et grunnleggende tilfeldig desimaltall mellom 0 (inklusiv) og 1 (eksklusiv), bruker du Math.random(). Dette krever ingen ytterligere manipulasjon:

const randomNumber = Math.random();
console.log(randomNumber);

Dette kan gi en verdi som 0.8995452185604771.

Generering av et tilfeldig heltall mellom to verdier

Når du trenger et heltall mellom to spesifikke verdier, inkluderer du både Math.random() og noe aritmetikk:

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);

Dette kan gi et heltall mellom 1 og 10, som 7.

Generering av en unik identifikator

Tilfeldige tall kan kombineres med andre metoder for å skape unike identifikatorer, for eksempel en enkel UUID-generatorbolk:

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);

Dette genererer en streng som likner en UUID, som 110e8400-e29b-41d4-a716-446655440000.

Dypdykk

Den primære metoden for å generere tilfeldige tall i JavaScript og dermed i TypeScript, Math.random(), er avhengig av en pseudo-tilfeldig tallgenerator (PRNG). Det er viktig å merke seg at selv om resultatene kan virke tilfeldige, genereres de av en deterministisk algoritme basert på en opprinnelig startverdi. Derfor er tall produsert av Math.random() ikke virkelig tilfeldige og bør ikke brukes til kryptografiske formål.

For kryptografisk sikre tilfeldige tall tilbyr Web Crypto API crypto.getRandomValues(), som er tilgjengelig i miljøer som støtter Web Crypto-standarden, inkludert moderne nettlesere og Node.js (via crypto-modulen). Her er et raskt eksempel som illustrerer bruken av det i TypeScript for å generere et sikkert tilfeldig tall innenfor et område:

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);

Denne metoden gir et sterkere nivå av tilfeldighet og er mer egnet for sikkerhetssensitive applikasjoner. Imidlertid er den også mer ressursintensiv og kan ikke være nødvendig for mer hverdagslige oppgaver, som enkle simuleringer eller ikke-kritiske generering av tilfeldige verdier.