Google Chrome 140 byl prohlášen za stabilní. Nejnovější stabilní verze 140.0.7339.80 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 6 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
LeoCAD (Wikipedie) je svobodná multiplatformní aplikace umožňující také na Linuxu vytvářet virtuální 3D modely z kostek lega. Vydána byla verze 25.09. Zdrojové kódy a AppImage jsou k dispozici na GitHubu. Instalovat lze také z Flathubu.
RubyMine, tj. IDE pro Ruby a Rails od společnosti JetBrains, je nově zdarma pro nekomerční použití.
Český LibreOffice tým vydává překlad příručky LibreOffice Calc 25.2. Calc je tabulkový procesor kancelářského balíku LibreOffice. Příručka je ke stažení na stránce dokumentace.
Byla vydána (Mastodon, 𝕏) vývojová verze 3.1.4 příští stabilní verze 3.2 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání.
Zakladatel ChimeraOS představil další linuxovou distribuci zaměřenou na hráče počítačových her. Kazeta je linuxová distribuce inspirována herními konzolemi z 90. let. Pro hraní hry je potřeba vložit paměťové médium s danou hrou. Doporučeny jsou SD karty.
Komunita kolem Linuxu From Scratch (LFS) vydala Linux From Scratch 12.4 a Linux From Scratch 12.4 se systemd. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů přichází s Glibc 2.42, Binutils 2.45 a Linuxem 6.15.1. Současně bylo oznámeno vydání verze 12.4 knih Beyond Linux From Scratch (BLFS) a Beyond Linux From Scratch se systemd.
Organizátoři konference LinuxDays ukončili veřejné přihlašování přednášek. Teď je na vás, abyste vybrali nejlepší témata, která na letošní konferenci zaznějí. Hlasovat můžete do neděle 7. září. Poté podle výsledků hlasování organizátoři sestaví program pro letošní ročník. Konference proběhne 4. a 5. října v Praze.
Byla vydána verze 11.0.0 vizuálního programovacího jazyka Snap! (Wikipedie) inspirovaného jazykem Scratch (Wikipedie). Přehled novinek na GitHubu.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma. Vypíchnout lze, že v Plasmě byl implementován 22letý požadavek. Historie schránky nově umožňuje ohvězdičkovat vybrané položky a mít k ním trvalý a snadný přístup.
Ahoj, narazil jsem na problémek se sestavením algoritmu pro generování náhodných znaků. Ne nejedná se o domácí úkol nebo podobně. Zadání tohoto příkladu bylo u zkoušky z programování v pascalu. Přiznávám trochu jsem se do toho zamotal. Takže zadání bylo následující: Generuj náhodný počet náhodných znaků v rozmezí 150 až 250 znaků z množiny čísel 0 až 9 a velkých a malých písmen anglické abecedy. Generované znaky musí být v poměru zadaném uživatelem. Tz. např. 30% znaků čísel. Generované znaky zapiš do souboru a to náhodně. Nešlo tedy vygeneroval 30% znaků čísel zapsat do souboru a dogenerovat znaky písmen do 100% celkového počtu znaků. Výsledkem měl být soubor, kde bude např. celkem 100 znaků, z toho 30 znaků čísel a 70 znaků velkých a malých písmen.
Ideu jak to udělat jsem měl, ale .... Případ kdy je 100 nebo 0 procent čísel je v pořádku. Problém mám kdy je to mezi
Myslel jsem něco jako
pom:=random(2); if (pom=0) then ............... "generuj cislo"; else if pom(1) then begin pom:=random(2); if (pom:=0) then ....... "generuj male pismeno" else .................. "generuj velke pismeno" end;celé to zaobalit do for i:=1 to celkovy_pocet_znaku. Jenze se mi nějak nedaří dostat tam tu podmínku dodržení procent znaku/cisel. Podařilo se mi, že podmínka byla dodržena, ale měl jsem o 1 nebo 2 znaky více, nebo mi seděl celkový počet znaků, ale neseděli procenta. Nemáte někdo nějaký nápad jak z toho? Pro tu zkoušku to už není podstatné, jen mi to leží v hlavě
Tiskni
Sdílej:
short cisel = 0.3; // 30% tohle at se vsechno nastavi nekde na vstupu short pismen = 0.7; // 70% int celkem = 100; int celkem_cisel = celkem*cisel; int celkem_pismen = celkem*pismen; for (i=0,i<=celkem ,i++){ srand((unsigned)time(0)); // aby cisla byla na pohled nahodna int rozhodovac = rand(); if (((rozhodovac%2)=0 && celkem_cisel>=0) || celkem_pismen=0){ // generovani 1 cisla se zapisem do souboru atd., nechce se mi nad tim premyslet --celkem_cisel; } if (((rozhodovac%2)!=0 && celkem_pismen>=0 || celkem_cisel=0){ // generovani 1 pismena se zapisem do souboru atd --celkem_pismen; } }
import random import re # vrati znak 0-9 def getNumber(): return chr(random.randrange(ord('0'), ord('9'))) # vrati A-Za-z def getChar(): ret = chr(91) while not re.match('[A-Za-z]', ret): ret = chr(random.randrange(ord('A'), ord('z'))) return ret # pomer pouze ciselnych ku neciselnym num_ratio = 0.3 # celkovy pocet cisel count = random.randrange(150, 250) # generovani while count: if (random.randint(0, 99) <= 100*num_ratio): print getNumber() else: print getChar() count -= 1Dokonalejší verze by si ještě pamatovala počty už vygenerovaných čísel/znaků, ale s tím se mi popravdě už psát nechtělo
(define (gen-items noitems fromc toc) (if (= noitems 0) '() (append (gen-items (- noitems 1) fromc toc) (list (integer->char (+ (random (+ (- (char->integer toc) (char->integer fromc)) 1)) (char->integer fromc))))))) (define (shake noshakes str) (if (= noshakes 0) str (let* ((pos1 (random (string-length str))) (pos2 (random (string-length str))) (ch1 (string-ref str pos1)) (ch2 (string-ref str pos2))) (string-set! str pos1 ch2) (string-set! str pos2 ch1) (shake (- noshakes 1) str)))) ;Tohle si definuje uzivatel (define nonums 0.2) (define nosc 0.3) (define nolc 0.5) ;A tohle uz se pocita (define noitems (+ 150 (random (+ 1 (- 250 150))))) (define str (list->string (append (gen-items (inexact->exact (round (* noitems nolc))) #\A #\Z) (gen-items (inexact->exact (round (* noitems nosc))) #\a #\z) (gen-items (inexact->exact (round (* noitems nonums))) #\0 #\9)))) (shake (* (string-length str) 2) str)
(use srfi-13) (use srfi-27) ;; Ze znaku retezce retezec generuje nahodny retezec delky delka ;) (define (nahodny-retezec retezec delka) (string-tabulate (lambda _ (string-ref retezec (random-integer (string-length retezec)))) delka)) ;; nahodne prohazi seznam (define (prohazej seznam) (map cdr (sort (map (cut cons (random-real) <>) seznam) (lambda (a b) (< (car a) (car b)))))) (define (generuj delka) (let* ((cislic (round (* 0.3 delka))) (retezec-k-prohazeni (string-concatenate (map nahodny-retezec '("abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMNOPQRSTUVXWYZ" "0123456789") ; mnoziny znaku (list (- delka cislic) cislic))))) ; prislusne pocty (list->string (prohazej (string->list retezec-k-prohazeni))))) (dotimes (i 10) (display (generuj 20)) (newline))
CHARS = (('a'..'z').to_a + ('A'..'Z').to_a) NUMS = (0..9).to_a def generate(l) c = (l*0.3).round t = [[CHARS, l-c], [NUMS, c]].map{|ch, n| Array.new(n){ch[rand(ch.size)]}} t.flatten.sort_by {rand}.join endPřijde mi rozumně kompaktní a dá se rozšířit na více skupin ekvivalence
if ((procent>0) and (procent<100)) then {generuje pismena i znaky} begin cisel:=Int((pocet/100)*procent); pismen:=(pocet-cisel); c:=0; p:=0; for i:=1 to ((pocet)) do begin pom:=random(2); if ((pom=0) and (c<>cisel)) then generuj_cisla; if ((pom=0) and (c=cisel)) then generuj_znaky; if ((pom=1) and (p<>pismen)) then generuj_znaky; if ((pom=1) and (p=pismen)) then generuj_cisla; end end;Generuj_cisla a generuj_znaky jsou procedury, které vypadají takto :
procedure generuj_cisla; begin znak := random(10)+48; {generuje cisla} c:=c+1; write(vystup,chr(znak)); end; procedure generuj_znaky; begin if (random(2))=0 then begin znak := random(26)+65; {generuje velka pismena} p:=p+1; write(vystup,chr(znak)) end else begin znak := random(26)+97; {generuje male pismena} p:=p+1; write(vystup,chr(znak)); end; end;Netušíte někdo jak to odladit aby mi neulítával ten jeden či dva znaky? Vyjma možnosti, že je na konci spočítám a přebývající smažu.
int main(int argc,char **argv) { // pocet znaku const int count = 1000; // pomer float rate = 0.256; int zero_rate = (int)(rate*(float)count); int sum = count; int z_cnt = 0; int o_cnt = 0; do { if (rand()%sum < zero_rate) { putchar('0'); z_cnt++; zero_rate--; } else { putchar('1'); o_cnt++; } } while(--sum > 0); register float f_count = (float)count; printf("\nfinal rate: %f : %f\n",(float)z_cnt/f_count,(float)o_cnt/f_count); return 0; }
cat /dev/urandom | tr -cd A-Za-z0-9 | fold -w8 | head -n 1