Hakuna matokeo yaliyopatikana
Hatuwezi kupata chochote kwa neno hilo kwa sasa, jaribu kutafuta kitu kingine.
Zalisha nambari bila mpangilio papo hapo kwa Jenereta yetu. Weka viwango, ruhusu au zuia nambari kujirudia, na upange matokeo yako kwa urahisi.
Nambari za nasibu
48, 9, 49, 11, 17, 22, 16, 37, 45, 41, 4, 36, 43, 10, 28, 27, 47, 25, 21, 33
Kulikuwa na hitilafu katika hesabu yako.
Jenereta ya nambari bila mpangilio (RNG - Random Number Generator) ni mfumo au mchakato ulioundwa kuzalisha nambari isiyotabirika kabisa kila inapoanzishwa. Kwa asili yake, haiwezekani kutambua mtindo au kutabiri matokeo ya baadaye kulingana na nambari zilizozalishwa hapo awali. Nambari hizi nasibu (random) zinaweza kuzalishwa kwa kutumia kanuni za hali ya juu za kihisabati au vifaa maalum vya kielektroniki.
Kuzalisha nambari bila mpangilio ni muhimu kwa kazi mbalimbali, kuanzia programu za kawaida za kila siku hadi michezo changamano ya kompyuta. Kwa mfano, tovuti hutumia jenereta za nambari bila mpangilio kuonyesha matangazo yanayobadilika-badilika au kupanga upya maudhui. Katika uwanja wa usalama wa mtandao, usimbaji fiche (cryptography) hutegemea sana nambari nasibu ili kuunda misimbo na funguo za usimbaji fiche za kipekee na salama sana.
Kwa ujumla, uzalishaji wa nambari nasibu hutumiwa kuunda captcha, kusimba data nyeti, kuzalisha misimbo ya usalama (cryptographic salts) kwa ajili ya kuhifadhi nywila kwa usalama, na kuwezesha jenereta za nywila nasibu. Pia ni uti wa mgongo wa kanuni za kuchanganya (shuffling algorithms) kwa michezo ya kadi ya kasino mtandaoni, ufanyaji maamuzi wa kiotomatiki, sampuli za kitakwimu, na uigaji wa kompyuta (computer simulations).
Katika sekta ya michezo ya kompyuta (gaming), kanuni za jenereta ya nambari bila mpangilio zina jukumu muhimu katika kufanya uchezaji uwe mpya na usiotabirika. Hata kama utarudia kucheza kiwango kilekile, RNG huhakikisha uzoefu unakuwa tofauti. Wakati ramani au misheni ya msingi inaweza kubaki vilevile, hali nasibu huamua viwango vya kuzuka na maeneo ya maadui, mabadiliko ya hali ya hewa, na kuibuka kwa vizuizi vya kushtukiza. Hali hii ya kutotabirika ndiyo inayofanya michezo ivutie na kurudiwa kuchezwa mara kwa mara.
Fikiria mfuatano ufuatao wa nambari: 1 , 2 , 3 , 4 , 5. Je, hii ni nasibu kweli?
Katika takwimu, kigezo cha nasibu (random variable) huchukua thamani maalum kama matokeo ya jaribio linalojitegemea. Jambo la msingi ni kwamba, haiwezekani kutabiri kwa usahihi kutokea kwa thamani fulani kabla haijatokea.
Tuseme mfuatano ulio hapo juu ulizalishwa kwa kuchapa kwenye safu ya juu ya nambari kwenye kibodi ya kawaida. Katika muktadha huu, muunganiko huo sio wa nasibu kabisa. Kwa nini? Kwa sababu baada ya nambari 5, nambari inayofuata, 6, inaweza kutabiriwa kwa uhakika wa karibu asilimia mia moja.
Mfuatano huchukuliwa kuwa ni wa nasibu kweli (truly random) ikiwa hakuna utegemezi wowote kati ya alama au nambari zake binafsi.
Sharti la msingi kwa jenereta ya nambari bila mpangilio iliyo ya haki na inayofanya kazi ipasavyo ni kwamba kila nambari inayowezekana lazima iwe na uwezekano (probability) sawa kabisa wa kuchaguliwa. Hii inahakikisha uhuru kamili; matokeo ya sasa hayaathiriwi na nambari zilizozalishwa kabla yake, wala hayataathiri nambari zitakazozalishwa baada yake.
Kwa mfano, unaporusha kete halali yenye pande sita kwa mara ya kwanza, nambari yoyote kutoka 1 hadi 6 ina uwezekano sawa wa kutokea juu. Haijalishi matokeo yako ya awali yalikuwaje, unaporusha kete kwa mara ya pili, ya mia, au ya elfu, nafasi zako za kupata nambari hiyohiyo zinabaki palepale bila kubadilika.
Kwa wengi, mfuatano usio na ukomo wa tarakimu katika kiwango kisichobadilika cha hisabati cha Pi (π) unaonekana kuwa wa nasibu kabisa na usiojirudia. Tuseme jenereta ya kufikirika inategemea uwakilishi wa biti ya Pi, kuanzia sehemu ya desimali ambayo haijawekwa wazi. Jenereta kama hiyo inaweza kuonekana haitabiriki kwa mtumiaji wa kawaida na inaweza hata kufaulu baadhi ya majaribio ya kitakwimu ya usibu (statistical randomness tests). Hata hivyo, kutegemea Pi kwa ajili ya usimbaji fiche ni hatari sana. Ikiwa mvamizi atagundua sehemu mahususi ya Pi inayotumiwa, anaweza kutabiri kwa urahisi tarakimu zote zilizotangulia na zinazofuata, na kuhatarisha usalama wa mfumo mara moja.
Ili kuhakikisha viwango vya juu vya usalama, Taasisi ya Kitaifa ya Viwango na Teknolojia ya Marekani (NIST) ilianzisha "Mkoba wa Majaribio ya Kitakwimu wa Jenereta za Nambari Nasibu na Nusu-Nasibu (Pseudorandom) kwa Matumizi ya Usimbaji Fiche". Mkoba huu imara unajumuisha majaribio 15 ya kipekee ya kitakwimu yaliyoundwa kupima kihisabati usibu halisi wa biti zinazozalishwa na jenereta za kielektroniki (hardware) na programu (software).
Kwa ujumla, kuna aina mbili kuu za jenereta za nambari bila mpangilio: Jenereta za Nambari Nasibu Halisi (TRNG - True Random Number Generators) na Jenereta za Nambari Nusu-Nasibu (PRNG - Pseudorandom Number Generators). Wakati TRNGs zinategemea matukio halisi yasiyotabirika ya kifizikia kuzalisha nambari, PRNGs hutegemea kabisa kanuni za kihisabati.
Jenereta ya Nambari Nasibu Halisi (TRNG) inategemea vifaa maalum vya kielektroniki vinavyonasa michakato ya kifizikia inayoonekana kwa hadubini (microscopic) ili kuzalisha nambari nasibu. Hali hii ya kifizikia ya kutotabirika inajulikana kama entropi (entropy)—kipimo cha kihisabati cha machafuko (chaos) safi yasiyochujwa.
Jenereta za nambari nasibu halisi hukusanya entropi kutoka kwa matukio ya kifizikia yasiyotabirika sana, kama vile:
Kwa sababu ya hali yake ya kutotabirika kabisa, TRNGs ni kiwango cha dhahabu kwa programu zenye mahitaji ya usalama wa hali ya juu, mawasiliano salama, na usimbaji wa data wa hali ya juu ulimwenguni kote.
Mifumo hii inayotegemea vifaa vya kielektroniki hutumia vyanzo vya nje vya entropi kukusanya data isiyotabirika, na kuunda thamani ya siri ya awali (inayojulikana kama "mbegu" au "seed") inayohitajika ili kuzalisha nambari nasibu salama kwa usalama.
Kinyume chake, kanuni za Jenereta ya Nambari Nusu-Nasibu (PRNG) hutumiwa kwa kawaida katika mazingira ambapo usalama mkali wa usimbaji fiche (cryptographic security) sio kipaumbele kikuu. Badala yake, aina hii ya usibu inatumika kuzuia kujirudia na kuunda uzoefu wa kuvutia kwa watumiaji. Kutumia teknolojia ya PRNG ni haraka sana na ina gharama nafuu kwa sababu haihitaji vifaa vya kielektroniki vya nje na inaweza kuunganishwa kwa urahisi katika msimbo wa kawaida wa programu (program code). Ingawa matokeo yamewekwa wazi na yanategemea kanuni fulani iliyopangwa, inafaa kabisa kwa michezo ya video, uigaji, na programu za kawaida za kompyuta.
PRNG inategemea thamani moja ya awali ya mbegu kutafuta mfuatano wake wa nusu-nasibu kihisabati. Badala yake, TRNG inaendelea kuzalisha nambari nasibu za ubora wa juu kwa kuchota mfululizo entropi mpya kutoka kwa vyanzo vya kifizikia visivyotabirika.
Uzalishaji wa nambari nusu-nasibu una mapungufu dhahiri. Kanuni hizi hufanikiwa tu kwa sababu matokeo yake huonekana kama nasibu kwa mtu asiye mtaalamu. Hata hivyo, ikiwa mtu atagundua thamani ya awali ya mbegu iliyotumika kwa mfuatano mahususi wa PRNG, anaweza kutabiri kikamilifu kila nambari inayofuata itakayozalishwa.
"Speedrunners"—wapenzi wanaolenga kukamilisha michezo ya video haraka iwezekanavyo—mara nyingi hutumia udhaifu huu haswa katika mbinu inayoitwa "Udhibiti wa RNG" (RNG manipulation). Kwa kufanya uhandisi-rejea (reverse-engineering) wa mbegu, wanaweza kuulazimisha mchezo kujiendesha kwa njia inayotabirika, hivyo kuokoa muda wa thamani. Katika michezo ya video, udhibiti huu hauna madhara na ni nadra kusababisha matatizo makubwa.
Hata hivyo, katika ulimwengu wa usalama wa mtandao, uwezo wa kutabiri nambari nasibu ni janga—hasa wakati wa kuzalisha funguo za usalama za usimbaji fiche (cryptographic security keys).
Ikiwa mvamizi mwenye nia mbaya atagundua thamani ya mbegu ya awali iliyotumika kuzalisha funguo za RSA kwa vyeti vya TLS, anaweza kufumbua usimbaji wa mawasiliano salama ya mtandao. Hii inamaanisha anaweza kunasa nywila, data za kifedha, na taarifa nyingine za kibinafsi nyeti sana zinazotumwa kupitia mtandao.
Katika mazingira haya ya hatari kubwa, njia salama sana ya kupata nambari nasibu—ambayo ni Jenereta ya Nambari Nasibu Halisi—ni muhimu sana.
Google hutoa zana yake iliyojengwa ndani ya kuzalisha nambari nasibu inayoendeshwa na JavaScript. Zana hii inayofikika kirahisi inafaa sana kwa kazi za haraka, za kila siku, kama vile kurusha kete pepe wakati wa michezo ya mezani (board games) na marafiki na familia. Unaweza kupata PRNG hii ya asili kwa urahisi kwa kuandika swali la utafutaji "random number generator" moja kwa moja kwenye Google.
Moja ya kanuni za zamani na zinazotambulika sana kwa jenereta za nambari nusu-nasibu ni Mbinu ya Ulinganifu wa Mstari (LCM) au Jenereta ya Ulinganifu wa Mstari (LCG). Kanuni hii, iliyopendekezwa na Derrick Henry Lehmer mwaka wa 1949, inafaa kikamilifu kwa programu rahisi zisizo na mahitaji makubwa ya usalama, ingawa haina nguvu yoyote ya usimbaji fiche.
Ili kufanikiwa kuzalisha mfuatano wa nambari kwa kutumia mfumo huu wa kihisabati, lazima ubainishe vipimo vinne muhimu:
m > 0, modulo (modulo)
0 ≤ a ≤ m, the multiplier (kizidisho)
0 ≤ c ≤ m, the increment (kiongezeko)
0 ≤ X₀ ≤ m, the initial number (nambari ya awali)
Mfuatano wenyewe wa nambari nusu-nasibu unakokotolewa kwa kujirudia kwa kutumia fomula ifuatayo ya kihisabati:
Xₙ₊₁ = (aXₙ + c) mod m
Ni muhimu sana kutambua kwamba ufanisi na usibu unaoonekana wa mbinu hii hutegemea kabisa uchaguzi makini wa vipimo hivi vya awali.
Kwa mfano, ikiwa tunatumia seti ifuatayo ya vipimo iliyochaguliwa vibaya:
X₀ = 3, a = 4, c = 5, m = 6
tutaishia kuzalisha mfuatano unaojirudia sana na mfupi wa
3, 5, 1, 3, 5, 1
ambao kwa wazi hauonekani kama nasibu hata kidogo.
Hata hivyo, ikiwa tutabadilisha vipimo kwenye seti kubwa zaidi na iliyochaguliwa kwa uangalifu zaidi:
X₀ = 2, a = 85, c = 507, m = 1356
Usambazaji wa matokeo mara moja unakuwa haitabiriki zaidi na wenye mfanano. Hii inaonyesha wazi kwa nini lazima uchague nambari za mbegu (seed numbers) kwa ajili ya jenereta hii ya kikanuni (algorithmic) kwa tahadhari kubwa:
2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365, 344, 1271, 62, 353, 680, 1355, 422, 1121, 872, 47, 434, 785, 788, 1043, 1022, 593, 740, 1031, 2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365, 344, 1271, 62, 353, 680, 1355, 422, 1121, 872, 47, 434, 785, 788, 1043, 1022, 593, 740, 1031, 2, 677, 1100, 443, 194, 725, 1112, 107, 110, 365...
Ingawa Jenereta ya Ulinganifu wa Mstari iliyoboreshwa vizuri inaweza kuzalisha mfuatano wa nusu-nasibu unaokubalika kitakwimu, kwa kiasi kikubwa ni dhaifu kimsingi. Kwa sababu LCGs zinatabirika kiasili ikiwa vipimo vinajulikana au kutazamwa, hazina uthabiti wa usimbaji fiche na hazipaswi kamwe kutumika kulinda data nyeti.
Jenereta zinazotegemea mbinu za ulinganifu wa mstari zilifanikiwa kuvunjwa kwa mara ya kwanza na Jim Reeds mnamo 1977, na baadaye na Joan Boyar mnamo 1982 (ambaye pia alifanikiwa kudhoofisha jenereta za kiwango cha pili - quadratic - na kiwango cha tatu - cubic). Utafiti wao ulithibitisha bila shaka kwamba kanuni za ulinganifu hazifai kabisa kwa usimbaji fiche wa kisasa. Hata hivyo, licha ya mapungufu haya ya kiusalama, LCGs zimesalia kuwa za thamani sana kwa matumizi yasiyo ya usimbaji fiche kama vile uigaji wa kisayansi na uundaji wa vielelezo vya kitakwimu. Zinatumia uwezo mdogo wa kompyuta na zinaendelea kuonyesha utendakazi bora wa kitakwimu katika majaribio mbalimbali ya kiutendaji.
Kifaa cha QRBG121 kinatumia usibu halisi wa kwanta (quantum randomness). Kifaa hiki kinategemea kabisa mchakato wa kifizikia wa kwanta wa utoaji wa fotoni ndani ya nusu-vikondakta (semiconductors) na ugunduzi wa baadaye wa fotoni hizi moja moja. Kwa sababu fotoni zinatolewa na kugunduliwa kwa nasibu kabisa na kujitegemea moja baada ya nyingine, taarifa sahihi ya muda wa matukio haya madogo inaweza kubadilishwa kwa njia ya kuaminika kuwa biti salama za nasibu.
Makao makuu ya Cloudflare yaliyopo San Francisco yanajulikana sana kwa kutumia ukuta wa "taa za lava" (lava lamps) za kawaida kama chanzo chenye ufanisi mkubwa wa entropi. Taa ya lava ya asili ina chombo cha kioo kilichojazwa mafuta angavu na nta nyepesi (parafini). Nta kwa kawaida ni nzito kuliko mafuta, lakini inapopashwa joto taratibu na balbu iliyo chini, inakuwa nyepesi, inapanda juu, inapoziwa, na kushuka chini katika mzunguko unaoendelea na unaovutia.
Kwa sababu mwendo wa majimaji (fluid dynamics) una vurugu sana, mienendo inayoendelea ya vimiminika haiwezi kutabirika kirahisi. Kamera kadhaa zenye ubora wa hali ya juu (high-resolution) hupiga picha mfululizo za ukuta huu wa taa za lava unaobadilika kila wakati. Taarifa za pikseli kutoka kwenye picha hizi zinazobadilika sana huingizwa kwenye kompyuta, ambayo hubadilisha kelele hizo za kuona (visual noise) kuwa funguo salama za usimbaji fiche.
Ofisi nyingine za kimataifa za Cloudflare pia hutumia vyanzo bora vya entropi vya kifizikia. Kule London, kamera hunasa mienendo isiyotabirika kabisa ya mfumo wa pendulum tatu zinazotikisika bila mpangilio. Wakati huo huo, ofisi ya Singapore inategemea kifaa cha kupima mionzi (Geiger counter) kupima mfumo wa mionzi ya kipande kidogo cha urani kisicho na madhara. Urani hutumika kama "chanzo cha data" kinachofaa kwa sababu wakati sahihi ambao atomu yoyote ya mionzi inapoamua kusambaratika (decay) kimsingi ni kitendo cha nasibu cha mekanika ya kwanta.
HotBits ni huduma ya mtandaoni inayotoa nambari nasibu halisi zinazozalishwa na kifaa cha kupima mionzi (Geiger counter) ambacho hurekodi mionzi asilia (background ionizing radiation). Watumiaji wanaweza kujaza fomu ya maombi kwenye tovuti ya HotBits, kubainisha idadi wanayotaka ya baiti nasibu, na kuchagua njia ya kuwasilishiwa. Ili kuhakikisha usalama wa juu zaidi wa usimbaji fiche, mara tu nambari nasibu zilizoombwa zinapofikishwa kwa mtumiaji, zinafutwa kabisa kutoka kwenye mfumo wa HotBits.
Kinyume na asili ya neno lake la Kilatini ("vacuus" linalomaanisha tupu), ombwe la kifizikia (physical vacuum) kamwe haliwi tupu kabisa. Likiongozwa na kanuni ya Heisenberg ya kutokuwa na uhakika (Heisenberg uncertainty principle) katika mekanika ya kwanta, ombwe ni nafasi yenye vurugu ambapo "chembechembe za kufikirika" (virtual particles) za subatomiki zinajitokeza na kutoweka kila wakati.
Wakitumia fursa hii, wanafizikia wa Kanada wameunda jenereta ya nambari nasibu inayofanya kazi haraka sana na iliyoundwa kwa ustadi, ikitegemea kabisa mabadiliko ya ombwe (vacuum fluctuations). Mfumo huu hutumia leza (laser) yenye mapigo ya mfululizo yanayosafiri kwa kasi kubwa, kimiminika kizito kinachopinda mwanga (kama vile almasi), na kifaa makini sana cha kugundua fotoni. Mapigo ya leza yanapopita kwenye almasi, sifa sahihi za kila pigo hubadilishwa kipekee na mabadiliko ya ombwe la kwanta yasiyotabirika yanayokutana nayo kwenye njia ya fotoni.
Mionzi inaposambaa, mistari ya kipekee ya wigo (spectral lines) hujitokeza. Kwa sababu mabadiliko ya msingi ya ombwe yanatokana na vurugu safi za kwanta (pure quantum chaos), sifa za mistari hii ya wigo hubadilika kwa njia zisizotabirika kabisa na zisizoweza kurudiwa kila wakati—na kusababisha usibu kamili.
Njia hii ya kisasa inachanganya kwa ustadi udogo wa umbile la kifizikia na kutotabirika kwa kelele za joto (thermal noise).
Watafiti wamefanikiwa kuunda Jenereta ya Nambari Nasibu Halisi kwa kutumia seli ya kumbukumbu ya SRAM (static random-access memory). Kinachofanya hili kuwa la kimapinduzi ni kwamba seli ya kumbukumbu huchapishwa kwa kutumia wino maalum wa kielektroniki ulioundwa na nanotiubu za kaboni zinazopitisha umeme (semiconducting carbon nanotubes). Kisha mfumo wa kifizikia huvuna mabadiliko ya kelele za joto (ambient thermal noise) ndani ya nanotiubu hizi ili kuzalisha biti za nasibu halisi kila mara.
Kwa sababu jenereta hii ya nanotiubu ya kaboni inaweza kuchapishwa moja kwa moja kwenye vifaa laini vya plastiki, inafungua milango ya ubunifu mkubwa. Inaweza kuingizwa kwa urahisi kwenye vifaa vidogo vya kielektroniki vinavyoweza kujikunja, vitambuzi (sensors) vinavyovaliwa mwilini vya kufuatilia afya, lebo za usalama za gharama nafuu zinazoweza kutupwa baada ya kutumika, na hata kwenye mavazi mahiri (smart clothing items).
Taasisi ya Electronic Frontier Foundation (EFF) imependekeza njia rahisi sana na isiyohitaji teknolojia kubwa ya kuzalisha nywila (passwords) salama sana za usimbaji fiche kwa kutumia TRNG ya kifizikia: kete za kawaida zenye pande sita.
Kwa mfano, unarusha kete tano kwa wakati mmoja na kurekodi nambari zinazotokea kutoka kushoto kwenda kulia. Ikiwa kete zitaonyesha 6, 3, 1, 3, na 1, mfuatano wako wa mwisho utakuwa 63131. Kisha, utaangalia orodha rasmi ya maneno ya EFF Diceware kwenye tovuti yao ili kupata neno mahususi lililopangiwa nambari 63131. Katika kesi hii, neno hilo ni "turbofan".
Kisha unarudia utaratibu huu wote mara kadhaa—kwa kawaida mara tano au sita—ili kuunda "kifungu salama cha maneno" (passphrase) chenye maneno mengi nasibu. Matokeo ya mwisho yanaweza kuonekana kama hivi: "turbofan purge unfitting try pruning". Kwa sababu kifungu hiki kinazalishwa na entropi safi ya kifizikia, kiko salama kihisabati dhidi ya mashambulizi ya kujaribu mchanganyiko wote (brute-force attacks). Zaidi ya hayo, kwa kutumia mbinu rahisi za kukumbuka (mnemonic), vifungu hivi dhahiri na nasibu vinakuwa rahisi sana kwa binadamu kuvikumbuka.
Katika onyesho la kuvutia la ubunifu, watafiti katika Chuo Kikuu kwenye Geneva walionyesha mwaka 2014 kwamba kifaa cha kawaida cha mtumiaji wa kila siku kinaweza kufanya kazi kama Jenereta ya Nambari Nasibu ya Kwanta (QRNG), hasa kwa kutumia kamera ya asili ya simu ya mkononi ya kawaida ya Nokia N9.
Wazo lenyewe lilikuwa la ustadi wa kustaajabisha: sensa ya kamera ya simu ilibadilishiwa matumizi ili kuhesabu idadi kamili ya chembechembe za mwanga (fotoni) zinazopiga kwenye kila pikseli (pixel) moja moja, kwa kutumia taa ya kawaida ya LED kama chanzo kikuu cha mwanga. Katika muda wa sekunde ndogo sana (microsecond), kila pikseli moja katika sensa ya megapixel 8 iligundua takriban fotoni 400. Kwa kunasa data hii kubwa na isiyotabirika ya mwanga wa kwanta kwenye mamilioni ya pikseli kwa wakati mmoja, watafiti walifanikiwa kutoa mfuatano mzito na salama sana wa nambari nasibu halisi.