Generování náhodných čísel a řetězců v JavaScriptu [Příklady]

Tato příručka vám ukáže, jak rychle a snadno generovat náhodná čísla a řetězce v programovacím jazyce JavaScript.

Generování náhodných hodnot je běžný a důležitý úkol při programování téměř jakéhokoli druhu aplikace střední složitosti.

Náhodné řetězce a čísla se používají ke generování jedinečných identifikátorů (např. pro krátké adresy URL ve službách zkracování adres URL), k identifikaci jedinečných záznamů v databázi a (co je nejdůležitější) se často používají k určení chování herních prvků ve videohrách ( například simulace hodu mincí nebo generování náhodného terénu).

Generování náhodných čísel v JavaScriptu pomocí Math.random()

JavaScript Math.random() funkce vrací náhodné číslo s plovoucí desetinnou čárkou mezi 0 a 1. Použití je velmi snadné:

var myRandomNumber = Math.random(); // A value between 0 and 1

Ale co když chcete celé číslo? Zkombinujte jej s Math.floor() funkce, která zaokrouhlí číslo dolů na nejbližší celé číslo a vynásobí náhodné číslo maximálním číslem, které chcete získat:

var myRandomInteger = Math.floor(Math.random() * 15);

Výše uvedený příklad přiřadí proměnné myRandomInteger náhodné celé číslo od 0 do 15.

Tento koncept lze rozšířit a získat náhodnou celočíselnou hodnotu mezi libovolnými dvěma hodnotami:

function getRandomInteger(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1) + min); //The maximum is inclusive and the minimum is inclusive
}

Což lze použít takto:

var myRandomInteger = getRandomInteger(2, 18);

Což by vrátilo náhodné celé číslo mezi 2 a 18 včetně.

Chcete získat číslo s plovoucí desetinnou čárkou mezi minmax ? Odstraňte poslední Math.floor() aby se zabránilo zaokrouhlování výsledku na nejbližší celé číslo.

Další druhy náhodných čísel můžete generovat pomocí Math.Random() v dokumentech Mozilla Developer.

Generování náhodných řetězců v JavaScriptu

Neexistuje žádný vestavěný JavaScriptový způsob, jak generovat náhodný řetězec, takže zde je elegantní řešení pro vlastní potřebu:

function randomString(minChars, maxChars) {
    Math.random().toString(36).substr(minChars, maxChars);
}

Co se tu tedy děje?

  • Nazývá se metoda Math.random()
  • Výsledek je převeden na řetězec pomocí funkce toString() s radix z 36
    • Aby to bylo jednoduché, radix převede náhodnou hodnotu reprezentovanou číselnými číslicemi na hodnotu s vysokým radixem kde náhodné číslo je reprezentováno písmeny abecedy
  • Výsledek toho všeho je poté oříznut pomocí substr() pro zkracování provázku na potřebnou délku
  • Existuje astronomicky malá pravděpodobnost, že bude vrácen prázdný řetězec, pokud Math.random() vrátí 0
    • Vzhledem k tomu, že jsme výukový web, použil jsem tento příklad, protože je snadné vysvětlit, proč dělá to, co dělá.
    • Podívejte se na tuto odpověď na StackOverflow pro diskuzi a řešení tohoto problému

Tuto funkci lze použít takto:

var myRandomString = randomString(2,6);

Výše uvedený příklad vygeneruje náhodný řetězec o délce 2 až 6 znaků.

Bezpečnostní varování!

Všechny náhodné hodnoty generované pomocí výše uvedeného kódu jsou považovány za pseudonáhodné dostatečně náhodné pro obecné použití, ale ne dostatečně náhodné pro neprůstřelné zabezpečení při hašování hesel nebo generování bezpečných šifer.

Pokud chcete zabezpečit aplikaci pomocí náhodných dat – MUSÍTE použít vhodnou kryptografickou knihovnu.

Ještě lepší – prostě ne. Místo toho použijte předem vytvořenou knihovnu ověřování nebo kryptografie. Zavedení vlastních ověřovacích a šifrovacích služeb pomocí výukových programů, které jste našli online, je dobrý způsob, jak kompromitovat vaše data. Stačí integrovat řešení vytvořené profesionály – ušetříte čas a méně starostí.