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 17:22 | IT novinky

    Microsoft představil Azure Cobalt 200, tj. svůj vlastní SoC (System-on-Chip) postavený na ARM a optimalizovaný pro cloud.

    Ladislav Hagara | Komentářů: 0
    dnes 12:00 | IT novinky

    Co způsobilo včerejší nejhorší výpadek Cloudflare od roku 2019? Nebyl to kybernetický útok. Vše začalo změnou oprávnění v jednom z databázových systémů a pokračovalo vygenerováním problém způsobujícího konfiguračního souboru a jeho distribucí na všechny počítače Cloudflare. Podrobně v příspěvku na blogu Cloudflare.

    Ladislav Hagara | Komentářů: 4
    včera 23:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) první RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.

    Ladislav Hagara | Komentářů: 1
    včera 23:22 | Komunita

    Eugen Rochko, zakladatel Mastodonu, tj. sociální sítě, která není na prodej, oznámil, že po téměř 10 letech odstupuje z pozice CEO a převádí vlastnictví ochranné známky a dalších aktiv na neziskovou organizaci Mastodon.

    Ladislav Hagara | Komentářů: 0
    včera 19:44 | Nová verze

    Byla vydána nová major verze 5.0 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 14:00 | Upozornění

    Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.

    Ladislav Hagara | Komentářů: 10
    včera 04:22 | Pozvánky

    Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou

    … více »
    SoutezKasiopea | Komentářů: 1
    včera 04:11 | Nová verze

    Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    17.11. 18:00 | Nová verze

    VKD3D-Proton byl vydán ve verzi 3.0. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan. V přehledu novinek je vypíchnuta podpora AMD FSR 4 (AMD FidelityFX Super Resolution 4).

    Ladislav Hagara | Komentářů: 0
    17.11. 03:11 | Nová verze

    Poštovní klient Thunderbird byl vydán v nové verzi 145.0. Podporuje DNS přes HTTPS nebo Microsoft Exchange skrze Exchange Web Services. Ukončena byla podpora 32bitového Thunderbirdu pro Linux.

    Ladislav Hagara | Komentářů: 2
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (23%)
     (15%)
     (23%)
     (15%)
     (17%)
    Celkem 369 hlasů
     Komentářů: 16, poslední 12.11. 18:21
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Náhodné kombinace (prvky s různou pravděpodobností)

    |🇵🇸 avatar 21.12.2010 22:41 |🇵🇸 | skóre: 93 | blog:
    Náhodné kombinace (prvky s různou pravděpodobností)
    Přečteno: 261×
    Mám v programu množinu prvků, z nichž každý má přiřazeno nějaké ohodnocení. Potřebuji vygenerovat náhodnou kombinaci (s volitelně připuštěným opakováním) N prvků z té množiny (N přirozené a nemusí se rovnat počtu prvků množiny), přičemž pravděpodobnost, že se prvek množiny v kombinaci vyskytne, je ovlivněna tím ohodnocením prvku. To je právě věc, kterou mě nenapadá, jak jednoduše implementovat (program píšu v Pythonu).

    Nakopne mě, prosím, někdo správným směrem?
    🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána

    Řešení dotazu:


    Odpovědi

    21.12.2010 23:26 Goheeca
    Rozbalit Rozbalit vše Re: Náhodné kombinace (prvky s různou pravděpodobností)

    nakopnuti:

    bud nahodny vyber z pole/monziny, kde pocet vyskytu nejakeho prvku je umerny vaze prvku
    nebo udelat nejakou prevodni funkci

    int prvky[N],vahy[N];
    int rnd2index(int rnd) {
      int i,tmp = 0;
      for(i=0;i<N;i++) if((tmp+=vahy[i])>=rnd) break;
      return i;
    }

    rnd je generovano od 0 do suma(vahy)

    21.12.2010 23:43 Goheeca
    Rozbalit Rozbalit vše Re: Náhodné kombinace (prvky s různou pravděpodobností)

    vlastne od 1 do suma(vahy)
    nebo nahradit >= za > a pak od 0 do suma(vahy)-1

    22.12.2010 11:36 Goheeca
    Rozbalit Rozbalit vše Re: Náhodné kombinace (prvky s různou pravděpodobností)

    hm je tam chyba ...
    oprava:

    int prvky[N],vahy[N];
    int rnd2index(int rnd) {
      int i,tmp = 0;
      for(i=0;i<N;i++) {
        tmp+=vahy[i];
        if(tmp>rnd) break;
      }
      return i;
    }

    |🇵🇸 avatar 24.12.2010 14:07 |🇵🇸 | skóre: 93 | blog:
    Rozbalit Rozbalit vše Re: Náhodné kombinace (prvky s různou pravděpodobností)
    Díky. Tu převodní funkci jsem moc nepobral, takže jsem nakonec (aspoň dočasně) použil tu variantu s množinou s počtem výskytů odpovídajícím váze, nicméně to může mít nezanedbatelnou paměťovou náročnost...
    🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
    24.12.2010 15:05 chrono
    Rozbalit Rozbalit vše Re: Náhodné kombinace (prvky s různou pravděpodobností)
    Skús sa pozrieť na Generating Random Integers With Arbitrary Probabilities. Je to na prvý pohľad dosť zložité, ale celý algoritmus je tam vysvetlený a je tam aj kód v pythone.
    |🇵🇸 avatar 24.12.2010 17:23 |🇵🇸 | skóre: 93 | blog:
    Rozbalit Rozbalit vše Re: Náhodné kombinace (prvky s různou pravděpodobností)
    Ha, díky moc, tohle už bude ono.
    🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
    25.12.2010 22:55 Goheeca
    Rozbalit Rozbalit vše Re: Náhodné kombinace (prvky s různou pravděpodobností)

    no myslel jsem to nejak takhle:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int suma(int j, int* p) {
    	int i=0,tmp=0;
    	for(;i<j;i++) tmp += *(p+i);
    	return tmp;
    }
    
    int weightedrnd(int j, int* values, int* weights) {
    	int i=0,tmp=0,sum=suma(j, weights),rnd=rand();
    	for(;i<j;i++) {
    		tmp += weights[i];
    		if(tmp>rnd%sum) break;
    	}
    	return *(values+i);
    }
    
    int main(int argc, char** argv) {
    	int i,*v,*w;
    	if (argc<=2 || !argc%2) return -1;
    	int n = argc/2-1;
    	v = (int*) malloc(sizeof(int)*n);
    	w = (int*) malloc(sizeof(int)*n);
    	for(i=0;i<n;i++) {
    		v[i] = atoi(argv[i*2+2]);
    		w[i] = atoi(argv[i*2+3]);
    		if (w[i]<=0) {        
    			free(v);
    			free(w);
    			return -2;
    		}
    	}
    	/*for(i=0;i<n;i++) printf ("v:%d w:%d\n", v[i], w[i]);*/
    	srand(time(NULL));
    	for(i=0;i<atoi(argv[1]);i++) printf ("%d ", weightedrnd(n,v,w));
    	free(v);
    	free(w);
    	return 0;
    }
    

    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.