Kizalishi cha nambari za bahati nasibu

Tengeneza namba moja ya nasibu, orodha, au seti kadhaa za namba katika kiwango chochote — zote hutengenezwa moja kwa moja kwenye kivinjari chako kwa nasibu yenye usalama wa kiwango cha kriptografia, kamwe kwenye seva.

Bofya Tengeneza ili kuchagua
Chaguo

Unahitaji njia ya haraka na ya haki ya kupata namba ya nasibu? Kizalishi hiki cha bure cha nambari za bahati nasibu mtandaoni hutengeneza namba moja — au orodha nzima ya namba — katika kiwango chochote unachochagua, kutoka kiwango rahisi cha 1 hadi 10 hadi viwango vinavyofikia mabilioni. Weka thamani ya chini na ya juu katika «Kima cha chini» na «Upeo», chagua namba ngapi unahitaji kwa «Idadi», kisha bonyeza «Tengeneza». Mipaka yote miwili inajumuishwa kwenye matokeo, hivyo kiwango cha 1 hadi 10 kinaweza kutoa 1 na 10.

Kila matokeo hutengenezwa moja kwa moja kwenye kivinjari chako kwa kutumia Web Crypto API (crypto.getRandomValues) — ambayo hutoa thamani za nasibu zenye usalama wa kiwango cha kriptografia kutoka kwa chanzo cha nasibu cha mfumo wako wa uendeshaji. Hakuna kinachotumwa kwenye seva, hakuna kinachorekodiwa kwenye seva, na hatuoni namba zako kamwe. Utengenezaji hufanyika papo hapo, kwa faragha, na huendelea kufanya kazi hata kwenye muunganisho wa polepole baada ya ukurasa kupakia.

Chaguo hizi zimeundwa kwa ajili ya hali halisi ambapo watu wanahitaji namba za nasibu. Washa «Ya kipekee» ili kuhakikisha hakuna namba inayoonekana mara mbili — mpangilio unaohitajika kwa michezo ya bahati nasibu, droo za bahati nasibu, au kugawanya watu katika vikundi bila kurudia. Unahitaji washindi 20 kutoka kwa washiriki 500? Weka «Kima cha chini» kuwa 1 na «Upeo» kuwa 500, washa «Ya kipekee», weka «Idadi» kuwa 20, kisha bonyeza «Tengeneza». «Mpangilio wa upangaji» hupanga matokeo kwa kupanda au kushuka, na kitufe kimoja hunakili matokeo yote kwa pamoja. Kubadilisha «Muundo wa matokeo» kutoka «Mstari mpya» hadi «Imetenganishwa kwa nafasi» au «Imetenganishwa kwa koma» kutaonyesha «Idadi ya seti»: tengeneza uchaguzi kadhaa huru kwa wakati mmoja — kwa mfano seti ishirini zenye namba 3 kila moja kwa raundi ishirini za bahati nasibu — na «Ruhusu nakala kati ya seti» huamua kama namba ile ile inaweza kuonekana katika zaidi ya seti moja.

Nasibu hii inatengenezwaje kwa hakika? Kivinjari chako hutoa thamani za nasibu zenye usalama wa kiwango cha kriptografia kupitia Web Crypto API, badala ya PRNG ya JavaScript kama Math.random(). Unapobonyeza «Tengeneza», ukurasa huomba thamani za nasibu kwa kutumia crypto.getRandomValues na kuzitumia kutengeneza namba katika kiwango ulichochagua. Chanzo cha msingi cha nasibu hii kinatolewa na mfumo wa uendeshaji, hivyo ukurasa hauhitaji kuhifadhi namba yake ya kianzio (seed) au mfuatano wa nasibu-bandia.

Kubadilisha thamani ghafi kuwa kiwango chako ndipo vizalishi mara nyingi hukosea kimya kimya, na hili linastahili kuzungumzwa kwa kifungu chake. Kuchukua thamani modulo ya ukubwa wa kiwango kunaonekana kama njia rahisi zaidi, lakini ndiyo pia njia yenye upendeleo: isipokuwa kiwango kigawanyike sawasawa katika 2^32, namba ndogo zaidi hutokea mara nyingi zaidi kidogo kuliko nyingine. Kasoro hii inaitwa modulo bias, na inaweza kupimwa, si nadharia tu. Badala yake, kizalishi hiki hukataa thamani yoyote inayozidi kizidishio kikubwa zaidi kamili cha kiwango na kuchukua thamani mpya tena — mbinu hii inaitwa rejection sampling. Hii inahitaji majaribio machache ya ziada, lakini badala yake hupata uhakika kamili: kila namba kati ya «Kima cha chini» na «Upeo» ina uwezekano sawa kabisa, si karibu sawa tu.

Ni nini kinachofanya namba iwe ya nasibu kweli kweli? Namba ni ya nasibu ya kutosha wakati matokeo ya awali hayasemi lolote kuhusu la ijayo — na kivitendo kuna viwango vitatu vya hilo. Kazi ya kawaida ya nasibu-bandia kama Math.random() huendesha algoriti ya uhakika (deterministic): yeyote anayejua hali yake ya ndani anaweza kuunda upya mfuatano mzima — hii inafaa kwa kuchanganya slaidi za uwasilishaji, lakini haifai kwa jambo lolote ambalo matokeo yake hayapaswi kutabirika. Kizalishi chenye usalama wa kiwango cha kriptografia — kiwango kinachotumiwa na chombo hiki — nacho ni algoriti, lakini kimeundwa kutengeneza thamani zisizotabirika kwa kutumia chanzo salama cha nasibu ya mfumo, na kimejengwa ili kutazama matokeo yake kusifichue lolote kuhusu thamani ijayo. Nasibu ya kimwili, kutoka vyanzo kama kelele za angahewa au uozo wa mionzi, ni kundi tofauti na viwango hivi viwili, ingawa kwa kuchagua namba katika kiwango, tofauti ya kivitendo hupotea. Hii ndiyo sababu vivinjari hutoa crypto API tofauti badala ya kuboresha Math.random(): vyote viwili hutatua matatizo tofauti, na kimoja tu kati ya hivyo ni salama wakati matokeo ni muhimu kwa mtu fulani.

Mfuatano wa nasibu kweli haujaundwa kuonekana wa nasibu machoni pa binadamu. Chukua namba kumi kati ya 1 na 10, nawe utaona mara kwa mara kurudia, jozi za karibu kama 7, 7, 8, au mfuatano mfupi wa namba kubwa mfululizo — na yote hayo ni ya kawaida. Nasibu ya kweli haitabiriki, wala haigawanyiki sawasawa: kila uchaguzi ni huru, namba za awali haziathiri kabisa zile zinazofuata, na hakuna namba inayopata «zamu» yake kamwe. Silika inayosisitiza kinyume chake inaitwa dhana potofu ya mcheza kamari (gambler's fallacy), na silika hiyo hiyo ndiyo hufanya binadamu wawe vizalishi duni vya namba za nasibu — tunapoombwa kuunda mfuatano wa nasibu wenyewe, tunakwepa kurudia na kusambaza thamani kwa usawa zaidi kuliko uwezekano halisi unavyofanya. Matokeo yanayoonekana nadhifu kupita kiasi ni alama ya mkono wa binadamu; nasibu ya kweli badala yake huunda makundi.

Kwa nini uchague kizalishi hiki cha nambari za bahati nasibu?

Namba za nasibu hutumika katika sehemu nyingi zaidi kuliko watu wengi wanavyofikiri. Walimu huwaita wanafunzi bila upendeleo. Watangazaji na timu za masoko huchagua washindi wa zawadi na michezo ya bahati nasibu mbele ya watazamaji wanaohitaji kuamini matokeo. Wachezaji hubadilisha kete iliyopotea au kuamua nani acheze kwanza, na mashindano huchagua mpangilio wa kuanza kwa kura. Watafiti huchagua sampuli ya nasibu ili matokeo yao yaweze kutumika kwa upana zaidi ya wale waliojitolea tu. Wasanidi programu hutengeneza data ya majaribio, huweka namba za kianzio kwa ajili ya masimulizi, na huchagua vitambulisho wakati wa QA. Kiungo cha pamoja cha haya yote ni mchakato wa uchaguzi wa nasibu unaoweza kuelezwa baadaye: kwa sababu uchaguzi hutumia nasibu ya kiwango cha kriptografia na hufanyika kabisa kwenye kifaa chako, unaweza kueleza na kuthibitisha jinsi mchakato wa uchaguzi ulivyofanyika iwapo mtu ataleta swali.

Kizalishi hiki kina mipaka michache halisi inayostahili kujulikana. Hali ya «Ya kipekee» haiwezi kutengeneza namba nyingi zaidi kuliko zilizopo kwenye kiwango: thamani 20 za kipekee kati ya 1 na 10 hazipo kabisa. Uchaguzi ni huru na matokeo ya awali hayaathiri yale yanayofuata, hivyo kuonyesha upya ukurasa hakuweki upya mzunguko wowote — kwa sababu hakuna mzunguko hapa kabisa. Na ingawa namba zina usalama wa kiwango cha kriptografia, uchaguzi hapa ni chaguo la haki, si utabiri: bahati nasibu rasmi hutumia vifaa vyake vya kimwili au vilivyoidhinishwa, na chochote kinachokokotolewa kwenye kivinjari chako hakina uhusiano wowote navyo. Ndani ya mipaka hiyo, kila namba katika kiwango chako ina uwezekano sawa kabisa katika kila uchaguzi.

FAQ

Je, nasibu hii ina usalama wa kiwango cha kriptografia?

Chombo hiki hutumia Web Crypto API (crypto.getRandomValues) ya kivinjari chako, ambayo hupata nasibu kutoka chanzo cha mfumo wa uendeshaji chenye usalama wa kiwango cha kriptografia. Tofauti na kazi rahisi za nasibu-bandia, matokeo yake yameundwa yasitabirike kivitendo, na rejection sampling huhakikisha namba zote katika kiwango zina uwezekano sawa, bila kupendelea namba ndogo zaidi.

Ninatengenezaje namba ya nasibu katika kiwango maalum?

Ingiza thamani ndogo kabisa inayowezekana katika sehemu ya «Kima cha chini» na kubwa zaidi katika sehemu ya «Upeo», kisha bonyeza «Tengeneza». Mipaka yote miwili inahesabiwa ndani ya matokeo, hivyo kiwango cha 1 hadi 10 kinaweza kuleta 1 au 10.

Je, ninaweza kutengeneza namba kadhaa za nasibu mara moja?

Ndiyo. Jaza sehemu ya «Idadi» kwa kiasi unachohitaji (hadi 1000), na kizalishi kitaandaa orodha nzima kwa kubofya mara moja tu. Kisha unaweza kunakili matokeo yote kwenye ubao wa kunakili kwa kutumia kitufe cha kunakili, au kuyahifadhi kwenye faili.

Je, ninaweza kutengeneza seti kadhaa za namba mara moja?

Ndiyo. Badilisha «Muundo wa matokeo» kutoka «Mstari mpya» hadi «Imetenganishwa kwa nafasi» au «Imetenganishwa kwa koma» ili kuonyesha sehemu ya «Idadi ya seti». Jaza idadi ya uchaguzi huru unaohitaji — kwa mfano, seti 20 zenye namba 3 kila moja kwa raundi 20 za bahati nasibu — kisha chagua kama nakala zinaruhusiwa kati ya seti tofauti.

Je, ninaweza kupanga namba zilizotengenezwa?

Ndiyo. Tumia «Mpangilio wa upangaji» kupanga kila orodha kwa kupanda au kushuka, au liache kwenye «Hakuna» ili namba zibaki katika mpangilio zilivyotengenezwa.

Ninaepukaje namba zinazorudiwa?

Washa kitufe cha «Ya kipekee». Kikiwa kimewashwa, kila namba kwenye orodha inahakikishiwa kuwa tofauti — inafaa kwa michezo ya bahati nasibu, zawadi za kubahatisha, au kugawanya watu katika vikundi. Kumbuka kuwa idadi haiwezi kuzidi ukubwa wa kiwango: haiwezekani kutengeneza namba 20 za kipekee kati ya 1 na 10.

Kwa nini namba ile ile inaendelea kujirudia?

Kwa sababu uchaguzi huru unaweza kurudiwa, na hiyo ndiyo hali halisi ya nasibu. Kila uchaguzi ni huru na hauathiriwi na uchaguzi uliotangulia, hivyo katika kiwango cha 1 hadi 10, uwezekano wa namba ile ile kuonekana mara mbili mfululizo ni 1 kati ya 10 kila wakati — hii ni jambo la kawaida, si hitilafu. Ikiwa unahitaji orodha isiyo na kurudia, washa «Ya kipekee» — hii huzuia uchaguzi kwa makusudi, wala haisahihishi kasoro yoyote.

Kwa nini mfuatano wa nasibu hauonekani wa nasibu?

Kwa sababu nasibu ya kweli haitabiriki, wala haigawanyiki sawasawa. Watu hutarajia matokeo ya nasibu yaenee kwa unadhifu, hivyo makundi, kurudia, na mfuatano mfupi kama 7, 7, 8 huhisi kama hitilafu, ilhali hicho ndicho hasa uwezekano huzalisha. Mfuatano unaoonekana nadhifu machoni pa binadamu mara nyingi ndio mfuatano ambao kwa kweli haukuwa wa nasibu.

Je, nasibu inayotengenezwa kwenye kivinjari inaweza kuaminiwa?

Ndiyo, ikiwa inatoka kwa Web Crypto API, kama ilivyo hapa. crypto.getRandomValues hutoa thamani zenye usalama wa kiwango cha kriptografia kwa kutumia chanzo cha nasibu cha mfumo wako wa uendeshaji, badala ya PRNG ya JavaScript kama Math.random(). Math.random() inapaswa kutiliwa shaka kwa jambo lolote muhimu: ina uhakika (deterministic) na haijawahi kuundwa isitabirike.

Je, namba za nasibu zinaweza kutabiriwa au kuathiriwa?

Kwa matumizi ya kawaida, haiwezekani kutabiri matokeo yanayofuata kwa kutegemea matokeo yaliyotangulia. Thamani hutoka kwa kizalishi chenye usalama wa kiwango cha kriptografia cha mfumo wako wa uendeshaji, hivyo kuangalia matokeo ya awali hakufichui lolote kuhusu yanayofuata, na uchaguzi hufanyika kabisa kwenye kifaa chako — hakuna seva inayohusika wala ombi la mtandao linaloweza kunaswa. Sisi pia hatuwezi kuathiri matokeo yako, kwa sababu hatuyaoni kamwe.

Je, inafaa kwa kuchagua washindi wa zawadi za kubahatisha au michezo ya bahati nasibu?

Inafaa. Mpe kila mshiriki namba moja, tengeneza matokeo moja katika kiwango hicho, na mshiriki mwenye namba inayolingana ashinde. Kwa kuwa chanzo kina usalama wa kiwango cha kriptografia na uchaguzi hufanyika kabisa kwenye kifaa chako, mchakato huu ni rahisi kuueleza na kuuthibitisha iwapo mshiriki ataleta swali kuhusu matokeo. Kwa kuchagua namba za tiketi ya bahati nasibu, chombo hiki hufanya kazi kama chombo cha uchaguzi wa nasibu, si chombo cha utabiri: bahati nasibu rasmi ni tofauti kabisa na chombo hiki.

Je, kuonyesha upya ukurasa hubadilisha nasibu?

Hapana, na haihitajiki pia. Kila uchaguzi tayari huomba thamani mpya kutoka kwa mfumo wa uendeshaji, hivyo matokeo yanabaki huru iwe umebonyeza «Tengeneza» mara kumi mfululizo au umepakia upya ukurasa kati ya kila bonyezo. Hakuna mzunguko unaohitaji kuanzishwa upya na hakuna hali inayopitwa na wakati — kuonyesha upya hufuta tu matokeo yanayoonekana kwenye skrini.

Je, kizalishi hiki ni bure, na je, mnahifadhi namba zangu?

Chombo hiki ni bure kabisa bila kuhitaji usajili. Namba zote hutengenezwa kwa njia ya ndani kwenye kivinjari chako na hazitoki kwenye kifaa chako kamwe, hivyo hata tungetaka, hatuwezi kuhifadhi au kuona matokeo yako.