Personalizza

da kirupa con il codice da Scott Ruttencutter | filed under JavaScript 101

Imparare a generare una serie di numeri casuali che cadono non solo all’interno di una gamma superiore e inferiore si specifica, ma la frequenza di ogni numero appare equo ed equilibrato! ⚖️

Per molte situazioni che vanno dalle operazioni di lancio della moneta alle animazioni procedurali, vorrai lavorare con numeri i cui valori sono un po ‘ imprevedibili., Si vuole lavorare con i numeri che sono casuali. Generare un numero casuale è facile. È integrato in JavaScript ed esposto tramite la famigerata matematica.casuale() funzione. Ora, se questa funzione esiste già, cosa stiamo ancora facendo qui? Bene, usare la funzione è solo una parte di essere in grado di generare un numero casuale. Per la maggior parte delle situazioni di vita reale, non vogliamo solo un numero casuale. Vorremo un tipo specifico di numero casuale-uno che rientra in un intervallo che definiamo. Ci sono alcuni trucchi sottili con questo, ed è ciò che il resto di queste sezioni esplorerà.

In poi!,

Mostrami il codice

Prima di immergermi nei dettagli, se tutto ciò che vuoi è il codice per generare un numero intero casuale all’interno di un intervallo impostato, usa la matematica.random() con la seguente formula:

Math.floor(Math.random() * (1 + High - Low)) + Low

Il valore per High è il numero casuale più grande che si desidera generare. Il valore per low è il numero casuale più piccolo che si desidera generare. Quando esegui questo codice, quello che otterrai è un numero che cade casualmente da qualche parte tra i limiti specificati da High e Low.,

Ecco alcuni esempi:

Per rendere le cose semplici, qui è una funzione, è possibile utilizzare invece:

function getRandomNumber(low, high) { let r = Math.floor(Math.random() * (high - low + 1)) + low; return r;}

Basta chiamare getRandomNumber e passare il limite inferiore e superiore come argomenti:

Che è la generazione di un numero casuale che cade all’interno di un intervallo specificato.

L’aggiunta di 1 Spiegato

In JavaScript, Matematica.,random () restituisce un numero maggiore o uguale a 0 ma inferiore a 1:

Un altro modo di statingthat è (0<= n< 1) dove n è il numero che stai cercando. Questa incapacità per la matematica.casuale per arrivare davvero molto vicino a 1 ma non arrivarci mai è in gran parte il motivo per cui ottenere un numero casuale tra un intervallo di numeri è così…inelegante:

Math.floor(Math.random() * (1 + High - Low)) + Low

Guardando un po ‘ oltre il nostro approccio, iniziamo con la più grande stranezza, l’aggiunta di 1. Ecco perché lo includiamo., Abbiamo già dichiarato molte volte che la matematica.la funzione random() non restituirà mai un 1 come valore. Restituirà qualcosa di simile.9999999, ma non sarà mai un 1. Vogliamo anche un numero rotondo che non include decimali. Esistono diversi approcci per arrotondare un numero, ma stiamo arrotondando l’output per matematica.piano dove arrotondiamo fino al più vicinointegra. Questo arrotondamento è il problema.

Se non abbiamo aggiunto il 1, a causa di come la matematica.il pavimento funziona, non otterrà mai la risposta massima possibile quando moltiplichiamo il risultato di High-Low per matematica.casuale()., Questo probabilmente non ha molto senso, quindi diamo un’occhiata a un esempio in cui si tenta di ottenere un numero casuale senza aggiungere 1.

Quello che vogliamo fare è generare un numero casuale tra 10 e 50. Ignorando il 1, questo è ciò che l’espressione sarà simile:

Math.floor(Math.random() * 40) + 10

La matematica.random () * 40 non restituirà mai un 40 perché thatwould richiede matematica.casuale () per restituire un 1…che non può. Cerchiamo di essere ottimisti e dire che la matematica.casuale () restituisce un .9999, e moltiplichiamo quellovalore per 40. Il valore che viene restituito sarà 39.996. Indovina un po ‘ di matematica.piano di 39.,996 sta per essere? Sta per essere 39! Quando questo 39 viene aggiunto a 10, si ottiene avalue di 49. Non hai un modo concepibile di ottenere una risposta di 50 che è l’alto numero nel tuo range di valori. L’unica soluzione è aggiungere un 1 all’operazione:

Math.floor(Math.random() * 41) + 10

Una volta fatto ciò, sarai in grado di generare tutti i numeri all’interno del range dei tuoi numeri alti e bassi, rispettivamente 10 e 50, con uguale frequenza.

Conclusione

Generare correttamente numeri casuali è un problema impegnativo., Sembra davvero semplice, ma ottenere la gamma di numeri non solo corretta ma anche che si verificano con uguale frequenza è dove accadono le sfide. Finché sei a conoscenza dei limiti dei vari metodi di arrotondamento, puoi sostituire la matematica.piano con la matematica.ceil o, se sei davvero audace, Matematica.rotondo.

Hai una domanda o vuoi solo chattare? Commento qui sotto o goccia dal nostro forum (sono in realtà la stessa cosa!) dove un gruppo di persone più amichevoli che tu abbia mai incontrato sarà felice di aiutarti!,

Quando Kirupa non è impegnato a scrivere di se stesso in 3a persona, sta praticando il distacco sociale-anche sui suoi profili Twitter, Facebook e LinkedIn.

Hit Iscriviti per ottenere suggerimenti fresco, trucchi, selfie, e più personalmente consegnato a mano alla tua casella di posta.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *