StudyFiWiki
WikiWebová aplikace
StudyFi

AI studijní materiály pro každého studenta. Shrnutí, kartičky, testy, podcasty a myšlenkové mapy.

Studijní materiály

  • Wiki
  • Webová aplikace
  • Registrace zdarma
  • O StudyFi

Právní informace

  • Obchodní podmínky
  • GDPR
  • Kontakt
Stáhnout na
App Store
Stáhnout na
Google Play
© 2026 StudyFi s.r.o.Vytvořeno s AI pro studenty
Wiki💻 Informatika a počítačové vědyDiskrétní simulace událostí: Principy a implementaceShrnutí

Shrnutí na Diskrétní simulace událostí: Principy a implementace

Diskrétní simulace událostí: Principy a implementace

ShrnutíTest znalostíKartičkyPodcastMyšlenková mapa

Úvod

Java knihovna javaSimulation poskytuje nástroje pro tvorbu simulací (správu seznamů, generování pseudonáhodných čísel a modelování procesů/korutin). Tento materiál shrnuje hlavní třídy Linkage/Link/Head, Random, Coroutine a Process a vysvětluje jejich použití na úrovni potřebné pro samostatné studium.

Definice: javaSimulation je sada tříd usnadňujících implementaci časově řízených simulací v Javě (správa front, plánování událostí, generování náhodných veličin, kvaziparalelní běh).

Základní struktury seznamů: Linkage, Link a Head

Seznamy v javaSimulation jsou realizovány přes vazby mezi položkami (linky). To dovoluje efektivní vkládání, odebírání a průchod bez potřeby indexů.

Třída Linkage (atributy a základní metody)

  • Atributy:
    • SUC: reference na následníka (typ Linkage)
    • PRED: reference na předchůdce (typ Linkage)
  • Metody (koncept):
    • suc: vrací následníka (null pro poslední prvek)
    • pred: vrací předchůdce (null pro první prvek)
    • prev: předchůdce (podobné předchozímu)

Definice: Linkage je základní uzel propojeného seznamu obsahující ukazatele na předchůdce a následníka.

Třída Link (operace nad jedním prvkem)

  • Metody:
    • into(S): vloží položku na konec seznamu S (S je instance třídy Head)
    • out: vyjme položku ze seznamu
    • follow(L): vloží položku za jiný Linkage L
    • precede(L): vloží položku před jiný Linkage L

Praktický příklad: pokud máme frontu čekajících procesů, metoda into přidá proces na konec, out ho odstraní, follow a precede umožňují vkládat relativně k jinému prvku.

Třída Head (hlavička seznamu)

  • Konstruktor: Head()
  • Metody:
    • first: první prvek seznamu (null pro prázdný)
    • last: poslední prvek seznamu (null pro prázdný)
    • empty: vrací true pro prázdný seznam
    • cardinal: počet prvků
    • clear: vyjme všechny prvky

Tabulka: srovnání operací Link vs Head

ÚkonLinkHead
Vložit prvek na konecinto(S)-- (Head příjímá prvky přes Link.into)
Odebrat prvekoutclear (odebere všechny)
Zjistit první/poslednípred/sucfirst / last
Kontrola prázdnostikontrola nullempty
💡 Věděli jste?Did you know that doubly linked lists allow odstranění libovolného prvku v čase $O(1)$ pokud máte referenci na tento prvek?

Generátor náhodných čísel: třída Random

Třída Random poskytuje metody pro generování pseudonáhodných čísel pro různá rozdělení. Je možné použít seed pro reprodukovatelnost.

Definice: Random je nástroj pro generování pseudonáhodných čísel se základními rozděleními (uniformní, normální, Poisson, atd.).

Hlavní rozhraní (vybrané metody):

  • Konstruktory: Random(), Random(seed : long)
  • draw(a : double) : boolean — binární náhodný výstup podle pravděpodobnosti $a$
  • randInt(a : int, b : int) : int — náhodné celé číslo v intervalu
  • uniform(a : double, b : double) : double — rovnoměrné rozdělení na $[a,b]$
  • normal(a : double, b : double) : double — normální rozdělení s parametry (střední, rozptyl/odchylka)
  • negexp(a : double) : double — negativně exponenciální rozdělení
  • poisson(a : double) : int — Poissonovo rozdělení
  • erlang(a : double, b : double) : double — Erlangovo rozdělení
  • discrete(a : double[]) : int — diskrétní rozdělení podle pravděpodobností v poli
  • linear(a : double[], b : double[]) : double — interpolované rozdělení

Praktické použití:

  • Modely čekacích linek: generování doby mezi příjezdy pomocí negexp(lambda)
  • Simulace poruch: počet poruch za jednotku času pomocí poisson(lambda)
💡 Věděli jste?Zajímavost: Generátory seedované stejnou hodnotou produkují identické posloupnosti čísel, což je užitečné pro reprodukovatelné experimenty.

Kvaziparalelní běh: Coroutine

Třída Coroutine poskytuje nízkoúrovňové nástroje pro modelování spolupracujících vlákonapodobných entit (korutiny) — umožňuje přepínání řízení mezi kontexty bez použití skutečných vláken JVM.

Definice: Coroutine je lehký m

Zaregistruj se pro celé shrnutí
KartičkyTest znalostíShrnutíPodcastMyšlenková mapa
Začni zdarma

Už máš účet? Přihlásit se

Java simulace - Základy

Klíčová slova: Diskrétní simulace, Java simulace

Klíčové pojmy: Linkage má SUC a PRED reference, Link.into(S) vloží prvek na konec seznamu S, Head.first / Head.last vrací okrajové prvky seznamu, Head.cardinal vrací počet prvků, Head.empty kontroluje prázdnotu, Random(seed) umožňuje reprodukovatelné posloupnosti, Random.negexp(lambda) generuje doby mezi příjezdy, Process.actions definuje chování procesu, Process.activate / reactivate plánují proces v SQS, hold/passivate zastavují aktivní proces, current() vrací právě běžící proces, resumeCurrent interně předává řízení ze SQS, SQS obsahuje naplánované události a jejich časy

## Úvod Java knihovna javaSimulation poskytuje nástroje pro tvorbu simulací (správu seznamů, generování pseudonáhodných čísel a modelování procesů/korutin). Tento materiál shrnuje hlavní třídy Linkage/Link/Head, Random, Coroutine a Process a vysvětluje jejich použití na úrovni potřebné pro samostatné studium. > Definice: javaSimulation je sada tříd usnadňujících implementaci časově řízených simulací v Javě (správa front, plánování událostí, generování náhodných veličin, kvaziparalelní běh). ## Základní struktury seznamů: Linkage, Link a Head Seznamy v javaSimulation jsou realizovány přes vazby mezi položkami (linky). To dovoluje efektivní vkládání, odebírání a průchod bez potřeby indexů. ### Třída Linkage (atributy a základní metody) - Atributy: - **SUC**: reference na následníka (typ Linkage) - **PRED**: reference na předchůdce (typ Linkage) - Metody (koncept): - **suc**: vrací následníka (null pro poslední prvek) - **pred**: vrací předchůdce (null pro první prvek) - **prev**: předchůdce (podobné předchozímu) > Definice: Linkage je základní uzel propojeného seznamu obsahující ukazatele na předchůdce a následníka. ### Třída Link (operace nad jedním prvkem) - Metody: - **into(S)**: vloží položku na konec seznamu S (S je instance třídy Head) - **out**: vyjme položku ze seznamu - **follow(L)**: vloží položku za jiný Linkage L - **precede(L)**: vloží položku před jiný Linkage L Praktický příklad: pokud máme frontu čekajících procesů, metoda into přidá proces na konec, out ho odstraní, follow a precede umožňují vkládat relativně k jinému prvku. ### Třída Head (hlavička seznamu) - Konstruktor: **Head()** - Metody: - **first**: první prvek seznamu (null pro prázdný) - **last**: poslední prvek seznamu (null pro prázdný) - **empty**: vrací true pro prázdný seznam - **cardinal**: počet prvků - **clear**: vyjme všechny prvky Tabulka: srovnání operací Link vs Head | Úkon | Link | Head | |------|------|------| | Vložit prvek na konec | into(S) | -- (Head příjímá prvky přes Link.into) | | Odebrat prvek | out | clear (odebere všechny) | | Zjistit první/poslední | pred/suc | first / last | | Kontrola prázdnosti | kontrola null | empty | Did you know that doubly linked lists allow odstranění libovolného prvku v čase $O(1)$ pokud máte referenci na tento prvek? ## Generátor náhodných čísel: třída Random Třída Random poskytuje metody pro generování pseudonáhodných čísel pro různá rozdělení. Je možné použít seed pro reprodukovatelnost. > Definice: Random je nástroj pro generování pseudonáhodných čísel se základními rozděleními (uniformní, normální, Poisson, atd.). Hlavní rozhraní (vybrané metody): - Konstruktory: **Random()**, **Random(seed : long)** - **draw(a : double) : boolean** — binární náhodný výstup podle pravděpodobnosti $a$ - **randInt(a : int, b : int) : int** — náhodné celé číslo v intervalu - **uniform(a : double, b : double) : double** — rovnoměrné rozdělení na $[a,b]$ - **normal(a : double, b : double) : double** — normální rozdělení s parametry (střední, rozptyl/odchylka) - **negexp(a : double) : double** — negativně exponenciální rozdělení - **poisson(a : double) : int** — Poissonovo rozdělení - **erlang(a : double, b : double) : double** — Erlangovo rozdělení - **discrete(a : double[]) : int** — diskrétní rozdělení podle pravděpodobností v poli - **linear(a : double[], b : double[]) : double** — interpolované rozdělení Praktické použití: - Modely čekacích linek: generování doby mezi příjezdy pomocí **negexp(lambda)** - Simulace poruch: počet poruch za jednotku času pomocí **poisson(lambda)** Zajímavost: Generátory seedované stejnou hodnotou produkují identické posloupnosti čísel, což je užitečné pro reprodukovatelné experimenty. ## Kvaziparalelní běh: Coroutine Třída **Coroutine** poskytuje nízkoúrovňové nástroje pro modelování spolupracujících vlákonapodobných entit (korutiny) — umožňuje přepínání řízení mezi kontexty bez použití skutečných vláken JVM. > Definice: Coroutine je lehký m

Další materiály

ShrnutíTest znalostíKartičkyPodcastMyšlenková mapa
← Zpět na téma