Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
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