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 20:11 | Zajímavý software

Alexandre Julliard oznámil jménem vývojového týmu Wine vydání první verze 1.0 knihovny vkd3d určené pro překlad volání Direct3D 12 na Vulkan. Zdrojové kódy vkd3d jsou k dispozici pod licencí LGPLv2.1+.

Ladislav Hagara | Komentářů: 0
dnes 19:33 | Komunita

Dnešním dnem lze účet Firefoxu chránit dvoufázovým ověřováním (2FA). Implementován byl standard TOTP (Time-based One-Time Password).

Ladislav Hagara | Komentářů: 0
dnes 15:17 | Pozvánky

Od pátku 25. 5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spoustu zajímavých přednášek, workshopů a také na Release Party nového openSUSE Leap 15.0. Na stejném místě proběhne v sobotu 26. 5. i seminář o bezpečnosti CryptoFest.

Jendа | Komentářů: 0
dnes 13:33 | Zajímavý software

Drawpile je svobodný multiplatformní program pro kreslení podporující společné kreslení několika uživatelů. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3+. Drawpile i Drawpile Server jsou ke stažení také ve formátu AppImage. Stačí tedy nastavit právo na spouštění a spustit.

Ladislav Hagara | Komentářů: 0
dnes 09:44 | Zajímavý software

Kalifornskému Muzeu počítačové historie (Computer History Museum) se po pěti letech vyjednávání se společností Qualcomm podařilo získat veškerá práva na poštovního klienta Eudora (Wikipedie), tj. kromě zdrojových kódů muzeum získalo také ochranní známku Eudora nebo domény eudora.com a eudora.org. Po pročištění byly zdrojové kódy Eudory uvolněny pod licencí BSD.

Ladislav Hagara | Komentářů: 3
včera 15:00 | Nová verze

Byla vydána nová stabilní verze 5.11 toolkitu Qt. Přehled novinek v příspěvku na blogu a na wiki stránce. Další dnešní příspěvek na blogu Qt je věnován Qt pro WebAssembly umožňujícímu běh Qt aplikací ve webovém prohlížeči. K vyzkoušení jsou příklady.

Ladislav Hagara | Komentářů: 0
včera 12:22 | Nová verze

Po 7 měsících vývoje od verze 0.12.0 byla vydána verze 0.13.0 hardwarově nenáročného desktopového prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklého sloučením projektů Razor-qt a LXDE. Přehled novinek v oznámení o vydání a v příspěvku ve fóru.

Ladislav Hagara | Komentářů: 14
včera 12:11 | Pozvánky

V úterý 29. května v 18:00 se v Brně koná pátý přednáškový večer o webovém vývoji. Čeká vás povídání o frameworku v Elixiru, vydávání nové kryptoměny přes ICO, component trees v Reactu. Na místě bude lehké občerstvení; vstup zdarma pro registrované. Více informací na Facebooku nebo se rovnou registrujte na Meetup.

dejvik | Komentářů: 0
včera 12:00 | Pozvánky

V pátek 25. května 2018 v Praze proběhne společné setkání komunity kolem Drupalu a překladatelů softwaru – tématem bude právě lokalizace svobodného softwaru (nejen Drupalu). Program začíná v 9.30 v budově Českého rozhlasu (Vinohradská 12), ale můžete přijít i později během dne.

Fluttershy, yay! | Komentářů: 0
včera 06:55 | Zajímavý software

Operační systém 9front, zřejmě nejaktivněji vyvíjený neoficiální fork systému Plan 9 (více informací), se dočkal nové verze nazvané „Ghost in the Minesweeper Shell“. K novým vydáním obvykle dochází každé jeden až tři měsíce.

Fluttershy, yay! | Komentářů: 0
Používáte pro některé služby inetd?
 (34%)
 (23%)
 (43%)
Celkem 148 hlasů
 Komentářů: 5, poslední včera 16:46
    Rozcestník
    Štítky: není přiřazen žádný štítek

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

    Fluttershy, yay! avatar 21.12.2010 22:41 Fluttershy, yay! | skóre: 82 | blog:
    Náhodné kombinace (prvky s různou pravděpodobností)
    Přečteno: 218×
    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?

    Ř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;
    }

    Fluttershy, yay! avatar 24.12.2010 14:07 Fluttershy, yay! | skóre: 82 | 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...
    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.
    Fluttershy, yay! avatar 24.12.2010 17:23 Fluttershy, yay! | skóre: 82 | blog:
    Rozbalit Rozbalit vše Re: Náhodné kombinace (prvky s různou pravděpodobností)
    Ha, díky moc, tohle už bude ono.
    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.