Ressu 2.1 Lottonumerot ja muuta

Kaikki oikeudet pidätetään. Edellisessä Ressu 2.0 postissa esiteltyyn toiminnallisuuteen on tehty seuraavia muutoksia: asiallinen lottonumeroiden tulostus, tuotantoversio ressusta (ilman debukkailuja), debukkailuversio ressusta erikseen, digits merkkijonon perusteella tehtävän tulosteen nopeutus, virheiden korjauksia, ja yleistä luettavuuden parantamista. Koko ohjelma on kopypastattavissa postin lopussa. Käyn seuraavassa läpi valitut osat uudesta ohjelmasta. Ensin ns tuotantoversio ressusta. Tuotantoversiossa on vielä… Continue reading Ressu 2.1 Lottonumerot ja muuta

Fort: Hashaamalla satunnaisuutta newressu komennon tulosteesta

Parissa edellisessä postissa olen esitellyt uuden ressun ja siihen liittyvän lelusovelluksen newressu. Tässä postissa käytetään newressun satunnaisuutta fort:in avainnukseen. Ensimmäisellä rutiinilla ajetaan komento (parametreineen), ja hashataan sen tulos: funktio popen suorittaa komennon ja palauttaa osoitteen (fp1) sen tulosteeseen. Komennon tulostetta luetaan fread:illa. Alussa on hashattavaan materiaaliin lisätty cvar, jolla voidaan varmistaa että “tulostetta säätämällä” ei… Continue reading Fort: Hashaamalla satunnaisuutta newressu komennon tulosteesta

Ressu 2.0 Vaihtoehtoiset satunnaisuuslähteet

Lisäsin muutaman kytkimen newressu-satunnaislukulelun parametreihin. Kytkimillä voi valita toisen satunnaislukulähteen. –fast kytkimellä valitaan nopea versio ressusta, joka ajaa ressu_genbytes_fast rutiinin kahteen kertaan. –urandom lukee satunnaisuuden /dev/urandom tiedostosta. –random lukee satunnaisuuden /dev/random tiedostosta. Oletuksena /dev/random:in käyttö on pois päältä (USE_RANDOM). –ressu on oletustoiminta, eli käytetään uutta ressua. Tällä ensimmäisellä readfile_xor() rutiinilla luetaan satunnaisuutta /dev/*random tiedostoista: Seuraavaksi… Continue reading Ressu 2.0 Vaihtoehtoiset satunnaisuuslähteet

Ressu 2.0 Uusi limitin laskenta

Kaikki oikeudet pidätetään. Edellinen posti jäi auki limitin laskennan osalta. Edellisessä kokeiltiin sqrt() ja cbrt() funktioita, mutta todellisuudessa kumpikaan niistä ei toimi halutulla tavalla. Tässä postissa limit lasketaan selailemalla vaihteluja alimmasta ylimpään, ja tarkastamalla onko edellinen vaihtelu*1.6 suurempi kun tämän kierroksen vaihtelu. Tässä postissa on myös muutos debukkaustulosteeseen. Edellisessä postissa kerroin että kellojono koostuu perusmateriaalista… Continue reading Ressu 2.0 Uusi limitin laskenta

Ressu 2.0

Kaikki oikeudet pidätetään. Tässä ressun uusimmassa versiossa on uusittu asiakaspuskurin hallintaa, löydetty kellojonosta löytyvien satunnaisbittien “laskentaan” uusi menetelmä. Asiakaspuskurin hallinnassa aiemmin asiakas toimitti puskurin satunnaisbittigeneraattorin täytettäväksi, ja satunnaislukugeneraattorilla ei ollut “omaa” muistialuetta. Näin jää aina mietittäväksi voisiko edellisestä puskurista laskea seuraavan tai päätellä satunnaisbittigeneraattorin ensimmäisen puskurin. Uudessa versiossa ressulla on oma puskurinsa, josta ressu palauttaa… Continue reading Ressu 2.0

FORT v0.4 uusi versio

Fortin edellisestä versiosta (https://moijari.com/?p=634) on kulunut jo jonkin verran aikaa ja uudessa versiossa on muutoksia, joten ajattelin postata uuden version. Oikeastaan varsinaisessa koodissa ei ole paljon muutoksia, ainoastaan nuo lohkon alun (FORT_INTERNAL_EVENTS_START) ja lopun (FORT_INTERNAL_EVENTS_END) makrot. Funktioiden esittelyt ovat muuttuneet siten, että tämän tiedoston (fort.c) sisäisiin apufunktioihin on lisätty static sana, joka estää funktioiden käytön… Continue reading FORT v0.4 uusi versio

FORT sisäisten satunnaistapahtumien lisääminen uudistunut

Tässä postissa esitelty tapa helpottaa fort koodin lukemista ja ohjelmasi omien tapahtumien lisäämistä. Tämä lyhentää koodia runsaasti ja helpottanee sen ymmärtämistä. Jos lisäät tapahtumia omaan ohjelmaasi, tee makroista ja internal_events -muuttujasta uudet versiot ilman internal sanaa. Ennen satunnaistapahtumat lisättiin seuraavalla lohkojen alkuun ja loppuun lisättävällä koodilla: Tässä lähetetään satunnaistapahtumia, joiden source on 10 ja 11.… Continue reading FORT sisäisten satunnaistapahtumien lisääminen uudistunut

Debuggaillaan ressun kelloketjuja

Tässä uusi debukkailuversio ressun kellon luvusta. Tämä lukee kelloa puskurillisen kerrallaan, tavallisen kellomerkki kerrallaan tavan sijasta. Jälkimmäinen tapa ei ole kovin mukava debukkailijan kannalta, koska kellojono tietysti etenee debukkaustulosteiden tulostamisen aikana ja kellojonot lyhenevät, joskus häviävät kokonaan. Kellomerkkejä voi olla vain yksi per kellon arvo. Edit: Tehty korjauksia julkaisun jälkeisten viikkojen aikana. Lisäksi muotoilin ohjelman… Continue reading Debuggaillaan ressun kelloketjuja

SHA256 tiivisteen laskentaohjelman vakiot

SHA256 laskentaohjelmaa kuvaavassa postissani mainitsin vakionumerot, joilla täytetään tiivisteen alustuksessa tiivisteen tila (state[]) ja transformissa käytettävä k256 taulu. Postissa sanoin, että ne tulevat alkulukujen neliöjuuren (state[]) ja kuutiojuuren (k256[]) desimaaleista. Tässä postissa käydään läpi ohjelma, joilla ne voidaan tarkistaa tai laskea. Postin mittaan käydään ohjelma ja sen tuloste läpi kappaleittain ja lopussa on ohjelma kokonaisuudessaan.… Continue reading SHA256 tiivisteen laskentaohjelman vakiot

RESSU 1.8

Ressun edellisessä versiossa(1.7) oli ongelma että myös perusriveistä laskettiin teoreettisia satunnaisbittejä. Tässä pyritään laskemaan mukaan ainoastaan poikkeukset säännöstä. Jos esimerkiksi perusketjut ovat kuuden merkin pituisia, tämän pitäisi laskea vain kuudesta poikkeavat ketjut, eli seiskat ja viitoset kuten edellisen postin esimerkissä. Tällä tavoin teoreettisten satunnaisbittien lukumäärä on lähempänä oikeata. Tässä varsinainen uusi koodi kokonaisuudessaan, muutetut rivit… Continue reading RESSU 1.8