Nuttige wenke

Willekeurige getalgenerering in JavaScript

Pin
Send
Share
Send
Send


Fraksionele willekeurige getalgenerering kan gedoen word met behulp van die volgende funksie:

Hierdie funksie neem twee argumente. Die eerste is die minimum ewekansige getal, en die tweede die maksimum.

Byvoorbeeld, as u spesifiseer - getRandom arbitrêr (1, 10), sal u gevolglik 'n getal in die omgewing van 1 en 10 kry, wat so sal lyk - 5.63726842 of soos 9.27647264 ensovoorts.

As u 'n heelgetal benodig, kyk dan na die funksie hieronder.

Hoe om ewekansige getalle in JavaScript te genereer

Willekeurige getalle word dikwels gebruik in gevalle soos byvoorbeeld. maak nie saak nie. Probleem met metode Math.random ()wat ons gaan gebruik, is dat dit 'n lang, byna nuttelose desimale getal genereer van die vorm 0.77180239201218795. Hier sal u leer hoe om ander metodes van die voorwerp te gebruik. wiskunde om 'n heelgetal in 'n gegewe reeks te kry.

Die artikel aanvaar dat u HTML en JavaScript goed genoeg ken om die instruksies in die artikel te volg. Indien nie, is daar baie werwe waar u opleiding kan kry. Met 'n bietjie moeite kan u na 'n rukkie terugkeer na hierdie artikel.

Basiese generasie

Die maklikste manier om 'n ewekansige getal te kry, is met 'n metode Math.random ()ingebou javascript.

Math.random () gee altyd 'n swewelpuntnommer tussen 0 en 1.

Tegnies kan die getal wat u kry 0 wees, maar dit sal nooit presies 1 wees nie.

Aangesien dit gereeld genoeg gebruik word, Math.random () sit binne die funksie

funksie getRandom () <
terugkeer Math.random (),
>

Die probleem is natuurlik dat die funksie altyd 'n ewekansige getal binne 'n baie beperkte reeks sal skep. Die meeste ander resepte op hierdie bladsy is ontwerp om hierdie probleem op te los.

Generasie tussen getalle: minimum en maksimum waardes

Om hierdie funksionaliteit by te voeg, benodig ons 'n bietjie wiskunde.

funksie getRandomFloat (min, maks) <
keer Math.random () * (maksimum - min) + min terug,
>
getRandomFloat (11, 101)
> 75.31898734299466

funksie getRandomInt (min, maks) <
return Math.floor (Math.random () * (max - min)) + min,
>

getRandomInt (10, 20)
> 12

Muntstuk-omslaan (ewekansig waar of onwaar)

As u net 0 of 1 moet kry, gebruik dan die volgende kode:

funksie coinToss () <
terugkeer Math.floor (Math.random () * 2),
>
muntstuk (),
> 0

As u spesifiek benodig waar of vals

funksie coinToss () <
terugkeer (Math.floor (Math.random () * 2) === 0),
>
muntstuk (),
> waar

As u enige woorde aan die kante van die muntstuk moet assosieer

funksie coinFlip () <
terugkeer (Math.floor (Math.random () * 2) === 0)? "up": "down",
>
muntstuk (),
> op

Korrekte willekeurige funksie

Soos u uit die voorbeelde hierbo kan sien, is dit lekker om die korrekte ewekansige funksie te skep om te gebruik vir alle ewekansige heelgetalteikens.

Die JavaScript-funksie gee altyd 'n ewekansige getal tussen min (ingesluit) en maksimum (uitgesluit):

Die JavaScript-funksie gee altyd 'n ewekansige getal tussen min en maksimum (beide is ingesluit):

Uitsonderingsgenerasie

Vir 'n beperkte reeks heelgetalle: skep 'n reeks getalle wat u wil teken en kies lukraak daaruit.

var numPool =,
rand = numPool [Math.floor (Math.random () * numPool.length)],

Vir iets meer dinamies: voeg 'n reeks heelgetalle by wat u wil uitsluit, en 'n leë skikking wat die resultaat sal bevat om die eerste skikking in die tweede te filter.

var numPool =,
var uitsluitPool =,
var filteredPool = [],

Skep dan 'n lus deur die skikking numPoolkyk of daar 'n ewekansige getal in die uitsonderingsreeks is excludePool, en plaas die resultaat in 'n reeks filteredPool:

Uiteindelik, vertoon 'n ewekansige getal uit die gefilterde skikking

var rand = filteredPool [Math.floor (Math.random () * filteredPool.length)],

Willekeurige, nie-herhalende getalgenerering

Vir klein stelle getalle: skep 'n skikking gevul met elemente, skuif dit willekeurig in, plaas die resultaat in 'n nuwe skikking en kry dan die geskommel elemente een keer:

var numPool =,

funksie shuffle (numPool) <
vir (var j, x, i = numPool.length, i, j = parseInt (Math.random () * i), x = numPool [- i], numPool [i] = numPool [j], numPool [j] ] = x),
terugkeer numPool,
>,
var randomResult = shuffle (numPool),
while (randomResult.length> 0) <
console.log (randomResult.pop ()),
>

Vir groter getalle getalle: skep en vul die skikking met ewekansige heelgetalle, en verwerp enige wat voorheen gegenereer is:

var numReserve = []
terwyl (numReserve.length

In die kode hierbo numReserve gevul met 12 ewekansige getalle tussen 0 en 1000. Die getalle kan dan uit die skikking verkry word.

kriptografie

Al die metodes hierbo getoon, sal nie voldoende wees om kriptografies veilige funksies te skep nie. Hiervoor kan ons gebruik Webkryptografie-APIdeur 'n getikte skikking te skep:

var cryptoStor = nuwe Uint16Array (8),

In hierdie geval skep ons 'n skikking met 8 verskillende gleuwe, wat elk 'n 16-bis ongetekende heelgetal kan bevat. Ander opsies sluit in Int8Array, Uint8Array, int16Array, Int32Array en Uint32Array.

Vul nou die skikking met willekeurige getalle van 'n sekere soort

Die geselekteerde waardes word in die konsole getoon:

> [43484, 57947, 46691, 49849, 24272, 11827, 28203, 17423]

Webkryptografie-API Dit bied goeie ondersteuning in moderne blaaiers, hoewel sommige vooraf voorgevoeg moet word.

Kopiëring van materiaal word slegs toegelaat met die skrywer (Mikhail Rusakov) en 'n direkte skakel na die webwerf (http://myrusakov.ru)!

Voeg my as 'n vriend (in) VKontakte: http://vk.com/myrusakov.
As u my en my werk wil beoordeel, skryf dit dan in my groep: http://vk.com/rusakovmy.

As u nie nuwe materiaal op die webwerf wil misloop nie,
dan kan jy teken in op updates: Teken in op updates

As u vrae het, of u wil praat oor hierdie artikel, kan u 'n opmerking aan die onderkant van die bladsy agterlaat.

Beveel hierdie artikel aan vriende:

As u van die webwerf hou, plaas dan 'n skakel daarna (op u webwerf, op die forum, in kontak):

Dit lyk so:

  • BB-kode van die skakel vir forums (jy kan dit byvoorbeeld in die handtekening plaas):
  • Opmerkings (4):

    Welkom! Kan 'n vraag nie van die onderwerp af wees nie?

    Natuurlik kan jy! Maar vra dit asseblief na die steundiens: http://support.myrusakov.ru/

    Dankie! Volgende keer het jy al op javascript.ru gereageer

    Groot! Bly vir jou!

    U moet aangemeld wees om kommentaar te lewer.
    As u nog nie op die webwerf geregistreer het nie, registreer eers.

    Kopiereg © 2010-2019 Rusakov Mikhail Yuryevich. Alle regte voorbehou.

    Top 10 voorbeelde

    SchoolsW3 is geoptimaliseer vir opleiding, toetsing en opleiding. Voorbeelde vergemaklik en verbeter lees en basiese begrip. Handboeke, naslaanboeke, voorbeelde word voortdurend hersien, om foute te vermy, is dit nie moontlik om die korrektheid van al die inhoud te waarborg nie. Deur hierdie webwerf te gebruik, stem u in om die gebruiksvoorwaardes, koekie en privaatheidsbeleid te lees en te aanvaar. Kopiereg 1999-2019 Alle regte voorbehou.
    Dit werk volgens die styl van W3.CSS.

    Hele getalle

    Om 'n heelgetal in JavaScript te maak, kan u die volgende funksie gebruik:

    Hierdie funksie neem dieselfde waardes as die funksie hierbo. Die enigste verskil is dat dit 'n ewekansige heelgetal lewer.

    Byvoorbeeld, as u 'n ewekansige getal tussen 50 en 100 benodig, kan u dit soos volg kry: getRandomInt (50, 100) en dit gee u 'n heelgetal (byvoorbeeld: 55 of 90, ens.).

    Pin
    Send
    Share
    Send
    Send