abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 00:22 | Komunita

    Během akce Arduino Days 2026 byl publikován Arduino Open Source Report 2025 (pdf) a oznámeno 7 nových produktů kompatibilních s deskou UNO Q (Arduino USB-C Power Supply, USB-C Cable, USB-C Hub, UNO Media Carrier, UNO Breakout Carrier, Bug Hopper, Modulino LED Matrix).

    Ladislav Hagara | Komentářů: 0
    včera 20:22 | IT novinky

    Google v pátek spustil v Česku Vyhledávání Live. Tato novinka umožňuje lidem vést plynulou konverzaci s vyhledávačem v češtině. A to prostřednictvím hlasu, nebo prostřednictvím toho, na co ukážou svým fotoaparátem či kamerou v mobilu. Rozšíření této multimodální funkce je možné díky nasazení Gemini 3.1 Flash Live, nového hlasového a audio modelu, který je od základu vícejazyčný, takže umožňuje lidem po celém světě mluvit na vyhledávač přirozeně a v jazyce, který je jim nejbližší.

    Ladislav Hagara | Komentářů: 0
    včera 12:55 | Zajímavý software

    Jsongrep je open-source nástroj, který efektivně prohledává JSON dokumenty (editovat je neumí). Kompiluje regulérní jazyk dotazu do podoby deterministického konečného automatu (DFA), díky čemuž prochází strom JSON dokumentu pouze jednou a je v tom tedy rychlejší než jiné nástroje jako jsou například jq, JMESPath nebo jql. Jsongrep je napsaný v programovacím jazyce Rust, zdrojový kód je dostupný na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 2
    28.3. 05:55 | Komunita

    O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.

    Ladislav Hagara | Komentářů: 10
    28.3. 05:22 | Komunita

    Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.

    Ladislav Hagara | Komentářů: 4
    28.3. 04:00 | Humor

    Adam Rice předvedl, že pomocí DNS lze distribuovat a spustit kompletní hru DOOM. Rozdělil WAD soubory a binárky do téměř 2000 DNS záznamů v Cloudflare zóně (jeden TXT záznam v DNS může nést okolo 2000 znaků textu). Ty pak stáhl PowerShellem, dekomprimoval a spustil přímo v paměti počítače bez nutnosti zápisu na disk, což prakticky dokazuje, že DNS může sloužit jako distribuované úložiště dat a možný kanál pro načítání kódu. Repozitář projektu je na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 7
    27.3. 13:00 | Komunita

    Dnes a zítra probíhají Arduino Days 2026. Na programu je řada zajímavých přednášek. Sledovat je lze od 17:00 na YouTube. Zúčastnit se lze i lokálních akcí. Dnes v Poličce v městské knihovně a zítra v Praze na Matfyzu.

    Ladislav Hagara | Komentářů: 10
    27.3. 12:11 | Nová verze

    Byla vydána beta verze Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.04 LTS mělo vyjít 23. dubna 2026.

    Ladislav Hagara | Komentářů: 2
    27.3. 02:22 | Komunita Ladislav Hagara | Komentářů: 11
    26.3. 23:22 | Komunita

    Ubuntu plánuje v budoucích verzích nahradit tradiční nástroje pro synchronizaci času (chrony, linuxptp a gpsd) novým, v Rustu napsaným ntpd-rs, který nabídne vyšší bezpečnost a stabilitu.

    Ladislav Hagara | Komentářů: 3
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (30%)
     (3%)
     (5%)
     (1%)
     (14%)
     (24%)
    Celkem 1182 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: C++ zvyseni RAND_MAX

    24.3.2012 12:10 Michal Reynolds
    C++ zvyseni RAND_MAX
    Přečteno: 495×
    Zdravim, potreboval bych generovat v C (pseudo)nahodna cisla z intervalu 0 - 4294967295, ale funkce rand() je generuje pouze do konstanty RANDMAX, coz je 2147483647. Jde toto nejakym zpusobem obejit?

    Odpovědi

    AraxoN avatar 24.3.2012 13:10 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: C++ zvyseni RAND_MAX
    Buď môžeš rovno čítať 4 bajty z /dev/urandom, alebo volať rand() dvakrát, čím dostaneš 62 pseudonáhodných bitov a z nich si potom vybrať tých 32 (napr. prvých 16 z prvého volania, druhých 16 z druhého).
    7.4.2012 00:41 l4m4
    Rozbalit Rozbalit vše Re: C++ zvyseni RAND_MAX
    Volat random() dvakrát bych -- pokud nejsou k disposici knihovny s lepšími generátory (MT, Tausworthe, MWC, ISAAC, ...), což běžně jsou -- asi doporučil, nevadí-li snížení efektivity dané nutností generovat dvě čísla. Rozhodně spíš než nějaké matlání lineárních kongruentních generátorů (s příšenými vlastnostmi), o kterých píší níže jiní. Není-li rychlost klíčová, tak to nevadí.

    Je-li rychlost klíčová, tak jednak se dá napsat wrapper, který ten to druhé náhodné číslo, z nějž je zapotřebí jen jeden bit, cacheuje a používá z něj bity postupně. Ale spíš je pak zapotřebí používat jiné generátory než systémový random(), umožnit inlinovat kód generování náhodnného čísla, ...
    24.3.2012 13:31 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: C++ zvyseni RAND_MAX
    Pokud na tom nezáleží tak třeba:
    #include <iostream>
    #include <stdlib.h>
    #include <stdint.h>
    #include <time.h>
    #include <iomanip>
    
    int main()
    {
      srand(time(NULL));
      std::cout << " RAND_MAX: "  << RAND_MAX << std::endl;
      uint32_t r = rand() % 2147483648;
      r += rand() % 2147483648;
      std::cout << " 31bit: "<< std::setw(10) << std::hex <<  r << std::endl;
      r = ((rand() % 256) << 24) | ((rand() % 256) << 16) | ((rand() % 256) << 8) | ((rand() % 256)) ;
      std::cout << "  8bit: " << std::setw(10) << std::hex<<  r << std::endl;
      return 0;
    }
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    6.4.2012 17:23 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: C++ zvyseni RAND_MAX
    Příloha:
    vim ze pises "pokud na tom nezalezi", ale i tak bych upozornil ze hlavne ten prvni zpusob je hodne spatnej. Problem je ze cisla priblizne uprostred intervalu se daji ziskat vice zpusoby nez cisla na kraji. Napr 0 ziskam jenom jednim zpusobem: 0+0, ale 100 ziskam hodne zpusobama 0+100, 1+99, 2+98, ...

    zkousel jsem kod
    #include <iostream>
    #include <stdlib.h>
    #include <stdint.h>
    #include <time.h>
    #include <iomanip>
     
    int main()
    {
            int cnt[256] = {0, };
    
            for (int i = 0; i < 100000; ++i)
            {
                    uint32_t r = rand() % 128;
                    r += rand() % 128;
                    ++cnt[r];
            }
            
            for (int i = 0; i < 256; ++i)
            {
                    std::cout << cnt[i] << "\n";
            }
    }
    
    a dava to distribuci co je v priloze.

    Ten druhej zpusob je lepsi, nekde jsem ale cetl ze u "linear congruential generatoru" (kterej je predpokladam pouzitej v rand()) maji spodni bity kratsi periodu nez horni, proto by mozna bylo lepsi pouzit deleni misto modula.

    Puvodnimu autorovy bych doporucil:

    - pokud potrebujes "cryptographically secure" generator tak pouzi /dev/random

    - pokud ne tak se podivej na generatory v c++11

    - pokud nemuzes pouzit c++11 tak naprogramuj vlastni linear congruential generator. Navod treba tady: http://en.wikipedia.org/wiki/Linear_congruential_generator. Z tabulky vem hodnoty pro 64 bit. Celkove to budou asi 3 radky kodu...
    6.4.2012 21:03 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: C++ zvyseni RAND_MAX
    Napsal jsem tam „pokud na tom nezáleží“, protože vím, že to není „bezpečné“ řešení, ale je to jednoduché a rychlé. Na bezpečné řešení se dá použít třeba i openssl.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.