Napište skutečně inkluzivní náhodnou metodu pro javascript

Objekt MATH Javascriptu má náhodnou metodu, která vrací z množiny [0,1) 0 včetně, 1 exkluzivní. Existuje způsob, jak vrátit skutečně náhodnou metodu, která zahrnuje 1.

např.

var rand = MATH.random()*2;

if(rand > 1)
{
   rand = MATH.floor(rand);
}

return rand; 

I když to vždy vrátí číslo z množiny [0,1], není to skutečně náhodné.

Odpověď

Abych to řekl na rovinu, to, o co se snažíte, nedává smysl.

Pamatujte, že při spojitém rozdělení pravděpodobnosti je pravděpodobnost získání konkrétní hodnoty nekonečně malá, takže matematicky vzato nikdy neuvidíte přesnou hodnotu 1.

Samozřejmě, ve světě počítačů není distribuce RNG skutečně spojitá, takže je „možné“, že narazíte na konkrétní hodnotu (jakkoli to zní hloupě), ale pravděpodobnost bude tak mizející, že v praxi to nikdy nezpozorujete.

Abych to vysvětlil trochu jasněji:pokud by se vám podařilo napsat takovou funkci v termínech s dvojnásobnou přesností, pravděpodobnost získání přesně 1 by byla přibližně 2 -64 . Pokud byste funkci volali 1 milionkrát za sekundu, museli byste čekat asi 600 000 let, než byste dostali 1.