Slumpmässiga nummer i JavaScript
Slumpmässiga nummer har alla möjliga användningsområden, från det roliga till det praktiska. De flesta spel innebär någon form av slumpmässighet i form av saker som tärningar eller blandade kort. Om du vill visa en slumpmässig offert när någon besöker din sida, behöver du en källa till slumpmässighet. Slumpmässiga nummer är inte alla roliga och spel, slumpmässiga nummer används i kryptografi, för slumpmässig provtagning, för modellering och för att sätta saker i slumpmässig ordning (som kandidater på en omröstning.) Vissa av dessa användningar använder inte nummer direkt , men du kan konvertera från slumpmässiga nummer till slumpmässiga saker genom att sätta de saker du vill välja i rader och slumpmässigt välja en rad. I programmering fungerar matriser bra för detta. Slumpmässiga siffror är inte alltid riktigt slumpmässiga. Om du rullar en uppsättning rättvisa tärningar får du slumpmässiga nummer, men de metoder som datorerna använder för att välja slumpmässiga nummer är ofta pseudo-slumpmässiga nummer, vilket betyder att de verkar vara slumpmässiga på ytan men de är antingen antingen förutsägbara eller en upprepande serier. För vissa saker är detta inte en viktig skillnad. Om du visar en slumpmässig offert eller skämt varje gång någon laddar din webbsida spelar det förmodligen ingen roll att någon kan förutsäga när en specifik offert dyker upp och du kan säkert använda pseudo-slumpmässiga nummer (för den delen kan du förmodligen visa bara dina citat i den ordning du råkade ned för dem.) Om du försöker göra slumpmässigt drogtest av Tour de France-idrottare är det avgörande att idrottare inte kan förutsäga när eller om de kommer att testas.

JavaScript Math-objektet innehåller en metod som tillhandahåller pseudo-slumpmässiga nummer. Till skillnad från många andra programmeringsspråk, tillåter JavaScript inte dig att sätta nummergeneratorn med din egen slumpmässighetskälla. Olika implementeringar skiljer sig i hur nära de riktigt slumpmässiga numren som tillhandahålls, men i allmänhet bör de vara tillräckligt bra för att använda för roliga eller konstnärliga ändamål, men om du behöver slumpmässiga nummer för lagligt reglerade eller säkerhetsändamål bör du hitta en bättre källa till slumpmässighet. De Math.random () metoden returnerar ett slumpmässigt antal som är antingen 0 eller mellan 0 och 1. Vissa versioner av Opera-webbläsaren har ett icke-standardiserat krav Math.random () metod som mycket sällan kommer att återvända 1. Du måste på något sätt hantera det oväntade resultatet - det enklaste förslaget jag har sett är att använda modulo-operatören med en mot det värde som returneras av Math.random (), detta kommer att returnera det ursprungliga värdet om det slumpmässiga talet är i det definierade intervallet och 0 om du fick en 1. Jag tycker också att jag inte behöver en slumpmässig decimal mindre än ett, utan snarare ett slumpmässigt heltal. För att få ett slumpmässigt heltal multiplicerar du värdet från Math.random () med antalet potentiella slumpmässiga nummer du vill ha (X) och hitta föregående eller nästa heltal. Matteobjektet ger golv- och takmetoder som du kan använda för detta ändamål. Om du använder den Math.floor () metod får du ett nummer från 0 till (X-1). Om du använder math.ceiling () metod får du ett heltal från 1 till X.

För att hitta ett slumptal mellan 0 och (X-1), använd:

Math.floor ((Math.random ()% 1) * X)

Dessa är särskilt användbara för att hitta ett slumpmässigt arrayelement.

För att hitta ett slumptal mellan 1 och X, använd:

Math.ceiling ((Math.random ()% 1) * X)

Uppgifter som detta som är ganska vanliga men som kräver en hel del skrivning är bra kandidater för att förvandlas till en funktion.

För en diskussion om skillnaden mellan verkligt slumpmässiga siffror och de pseudo-slumpmässiga siffrorna vi använder här, en källa till verkligt slumpmässiga siffror och några exempel på roliga saker du kan göra med slumpmässiga eller pseudo-slumpmässiga nummer, kolla in www.random. org

Video Instruktioner: Exploring JavaScript and the Web Audio API by Sam Green and Hugh Zabriskie (Maj 2024).