Random na Pampili

Araw-araw at pag-aaral

Pumili, humalo, maghati, maghagis — walang kinikilingan, at sinasabi kung paano.

Resulta
—
Pindutin ang bunot para magsimula.
Ano ang gagawin

Paano gamitin

Para saan ito

Bumunot nang patas ng mananalo sa raffle, haluin ang listahan, hatiin ang mga tao sa grupo, pumili ng random na numero o maghagis ng dice — pantay ang tsansa ng bawat pangalan.

Bago magsimula

Ihanda ang listahan ng pangalan o item, isa bawat linya — puwede ang kinopya mula sa sign-up sheet o chat. Para sa numero, alamin ang pinakamababa at pinakamataas na puwede.

  1. Piliin ang gagawin

    Sa Ano ang gagawin, piliin ang Pumili, Haluin, Hatiin sa grupo, Isang numero o Maghagis ng dice. Bumubunot agad ang pagpindot dito, gamit ang nasa mga kahon na.

  2. Ilagay ang listahan mo

    Palitan ng sa iyo ang mga halimbawang pangalan sa Isa kada linya, isang pangalan bawat linya. Kapag may dalawang taong magkapangalan, parehong kasali sila sa bunot, at may note na nagtuturo sa umuulit.

  3. Itakda ang mga numero

    Punan ang mga kahong lalabas: Ilan ang pipiliin, Ilang grupo, Pinakamababa at Pinakamataas para sa numero, o Ilang dice at Ilang mukha ang dice. I-check lang ang Payagang maulit ang iisa kung puwedeng manalo nang higit sa isang beses ang iisang pangalan — sa raffle, hayaan itong walang check.

  4. Pindutin ang Bumunot ulit

    Pindutin ang Bumunot ulit para bumunot. Hindi tulad ng karamihan ng tool sa site na ito, hindi nagbabago ang resulta habang nagta-type ka: bumubunot lang kapag pinindot ang button, kaya pindutin ito pagkatapos ng bawat pagbabago.

Pagbasa ng resulta

  • Resulta: ang nabunot — ang mga napiling pangalan, ang hinalong listahan, ang numero o ang dice.
  • Ang bunot: ang parehong bunot bilang listahang may numero, ayon sa pagkakalabas. Sa numero at dice, pinagsasama ng Kabuuan ang mga ito.
  • Mga grupo: kapag naghahati, kung ilan ang grupo, saka ang mga miyembro ng bawat grupo. Kapag hindi pantay ang hatian, isang tao lang ang pinakamalaking pagkakaiba ng mga grupo.

Kung may problema

  • Hindi nagbago ang resulta matapos mong baguhin ang listahan: walang nabubunot hangga't hindi pinipindot ang Bumunot ulit. Pindutin ito kapag tapos ka nang mag-edit.
  • Sabi ng error, humingi ka ng higit sa mapagpipilian: humingi ng mas kaunti, magdagdag ng pangalan o palawakin ang saklaw, o i-check ang Payagang maulit ang iisa.
  • Dalawang beses lumabas ang iisang pangalan: naka-check ang Payagang maulit ang iisa, o dalawang beses nasa listahan ang pangalan. Alisin ang check, o burahin ang sobrang linya.

Ano ito

May bumubunot ng panalo sa raffle gamit ang mga ganito, kaya hinahawakan ito sa pamantayan ng password generator, hindi ng laruan.

Dalawang bagay ang mali sa halos lahat ng picker sa web, at pareho silang hindi nakikita maliban kung bibilangin mo.

Una, ang Math.random. Hindi ito cryptographic — nababawi ang panloob nitong estado mula sa maikling serye ng output, at pagkatapos alam na ang lahat ng nakaraan at darating.

Pangalawa, ang modulo bias. Mukhang patas ang byte % 6 pero hindi: hindi nahahati ang 256 sa 6, kaya mga 2% na mas madalas lumabas ang apat sa anim na mukha. Itinatapon dito ang bunot na nahuhulog sa kulang na huling bloke at inuulit — ilang byte lang ang gastos, at pantay-pantay na lahat.

At hindi shuffle ang sort(() => Math.random() - 0.5). Nakadepende ang resulta sa algorithm ng browser, at may mga pagkakasunod na paulit-ulit lumalabas. Fisher-Yates ang ginagamit dito.

Mga tanong

Random ba talaga ito?

Bumubunot ito mula sa crypto.getRandomValues, ang cryptographic na pinagkukunan ng random ng browser — ang gamit din ng password generator sa site na ito. Sinasadyang hindi ginagamit ang Math.random kahit saan dito: hindi ito cryptographic at nababawi ang panloob nitong estado mula sa maikling serye ng output, at pagkatapos ay alam na ang bawat nakaraan at darating na halaga. Mahalaga iyon sa raffle.

Ano ang modulo bias, at bakit ko ito dapat pansinin?

Ito ang bug sa halos lahat ng picker sa web, at hindi ito nakikita maliban kung bibilangin mo. Mukhang patas ang pagkuha ng random na byte at paggawa ng "byte % 6" pero hindi: hindi nahahati ang 256 sa 6, kaya apat sa anim na mukha ang lumalabas nang mga 2% na mas madalas kaysa sa dalawa. Ang solusyon ay itapon ang anumang bunot na nahuhulog sa kulang na huling bloke at umulit, na ilang byte lang ang gastos at ginagawang eksaktong pantay-pantay ang bawat kalalabasan. Iyon ang ginagawa nito.

Bakit hindi shuffle ang pag-uuri gamit ang random na comparator?

Dahil sinisira ng comparator na hindi pare-pareho ang sagot ang kasunduang inaasahan ng bawat sort algorithm. Nakadepende ang resulta sa algorithm na ginagamit ng browser mo at sa orihinal na pagkakasunod ng listahan, at may mga pagkakaayos na ilang beses na mas madalas lumabas kaysa sa iba. Sikat ang one-liner na iyon at mali. Fisher-Yates ang gamit dito, na minsan lang dumadaan sa bawat puwesto at napapatunayang pantay.

May dalawang tao sa listahan ko na pareho ang pangalan. Ano ang mangyayari?

Nananatili silang dalawa sa bunutan, at sinasabi sa iyo ng pahina na may doble. Puwedeng talagang dalawang tao ang tawaging Maria, at ang tahimik na pagsasanib sa kanila ay magpapakalahati sa tsansa niyang manalo. Ito ang uri ng bagay na lumilitaw lang pagkatapos maibigay ang premyo, kaya sinasabi na ito nang maaga — puwede mong burahin ang isa kung maling type lang iyon.

Paano nito hinahati ang listahan sa mga grupo?

Hinahalo nito ang buong listahan, tapos isa-isang ipinamamahagi sa mga grupo, gaya ng baraha. Mahalaga iyon kapag hindi nahahati nang pantay ang bilang: pinapanatili ng pamamahagi na hindi lalagpas sa isang miyembro ang pagkakaiba ng bawat grupo, samantalang ang paghiwa ng hinalong listahan sa bloke ay ibinubuhos ang buong natira sa huling grupo.

Puwede ko bang makuha ang parehong resulta nang dalawang beses para patunayan ang bunutan?

Hindi, at sinasadya iyon. Kailangan ng seed para maulit ang bunutan, at ang seed na kahit sino ay puwedeng magtakda ay bunutang kahit sino ay puwedeng magmaniobra — at iyon mismo ang ayaw mo sa isang raffle. Kung kailangan mong patunayan ang resulta, itala ito habang nangyayari: kuhanan ng screenshot nang sabay ang listahan at ang kalalabasan, o bumunot sa harap ng mga kasangkot.

Ang komputasyon

Bakit hindi patas ang byte % 6
Halaga ng byte0–255
256 ÷ 642 labis 4
Mukha 1–443 paraan
Mukha 5–642 paraan
Solusyon: itapon ang ≥ 25242 lahat
Mga 1.6% ng bunot ang natatapon. Sulit para sa isang resultang walang kinikilingan.

Ituloy pa

Mahalaga

Runs entirely in your browser; nothing is transmitted. Draws come from crypto.getRandomValues with rejection sampling — never Math.random, and never a random sort comparator. Duplicates in your list are reported, not removed. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.