Forum » Programiranje » python- pomoč pri nalogi
python- pomoč pri nalogi
ktka ::
Pozdravljeni...Rabim pomoč pri eni nalogi...ta se glasi:
Izračunaj verjetnost, da se daljici določeni z paroma naključnih točk v danem kvadratu sekata.
Izvest moram 10 ciklov po 1000 poskusov in izračunati verjetnost in standardni odklon.
Muči me ta verjetnost...
Izračunaj verjetnost, da se daljici določeni z paroma naključnih točk v danem kvadratu sekata.
Izvest moram 10 ciklov po 1000 poskusov in izračunati verjetnost in standardni odklon.
Muči me ta verjetnost...
genesiss ::
Klasična definicija verjetnosti: Verjetnost @ Wikipedia
Torej, v enem ciklu imaš n=1000, m=število primerov ko se daljici sekata. P=m/n
Torej, v enem ciklu imaš n=1000, m=število primerov ko se daljici sekata. P=m/n
Zgodovina sprememb…
- spremenil: genesiss ()
ktka ::
Ja definicijo verjetnosti poznam. Ampak a ni tisti m vedno 1? Sej se daljici več kot enkrat ne moreta sekati? ALi se motim?
snow ::
m je mišljen kot število kolikokrat od 1000 random poskusov se sekata.
Iz 10 ciklov dobiš 10 verjetnosti iz katerih izračunaš potem SD in povprečno verjetnost.
Iz 10 ciklov dobiš 10 verjetnosti iz katerih izračunaš potem SD in povprečno verjetnost.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
Randomness ::
Dve daljici se načeloma res lahko sekata le v eni točki (razen, če ne ležita na isti premici). Ti pa moraš pregledati 1000 parov (različnih) daljic in prešteti, koliko je takih parov, kjer se daljici sekata.
ktka ::
Potem moram ločiti 3 primere:
- če sta daljici mimobežnici
- če se končna točka ene daljice nahaja na drugi daljici
- če se daljici sekata
Pri prvih dveh primerih je verjetnost 0, pri tretjem pa 1.
Prav ramzišjam?
In potem? A moram narediti dve zanki? Teh ciklov ne znam, ker jih nismo nikoli uporabljali.
- če sta daljici mimobežnici
- če se končna točka ene daljice nahaja na drugi daljici
- če se daljici sekata
Pri prvih dveh primerih je verjetnost 0, pri tretjem pa 1.
Prav ramzišjam?
In potem? A moram narediti dve zanki? Teh ciklov ne znam, ker jih nismo nikoli uporabljali.
Spura ::
Pri prvih dveh primerih je verjetnost 0, pri tretjem pa 1.
What? A ti je jasno kaj je to verjetnost? Lej meces kocko in stejes 6ke in mete. Na koncu je verjetnost 6ke stevilo padcev sestke deljeno stevilo vseh metov. Tukaj je isto. Delas pare daljic in gledas ce se sekajo. Verjetnost potem izracunas tako, da stevilo parov daljic ki so se sekale delis s stevilom vseh parov ki si jih naredil.
Randomness ::
Pusti verjetnost pri miru. Tvoja naloga je, da ugotoviš, ali se dve daljici sekata ali ne.
ktka ::
Se opravičujem...mislna sem prov, ampak sem malo poenostavila.
Problem imam, ker ne vem kako nej preverim če sta daljici mimobežnici? oziroma da nimata nobene skupne točke.
Problem imam, ker ne vem kako nej preverim če sta daljici mimobežnici? oziroma da nimata nobene skupne točke.
Spura ::
Ugotovis ali se premici na katerih sta daljci sekata in ce se premici sekata pogledas ce je presecisce na eni od daljic.
mchaber ::
Kot pomoč lahko mogoče uporabiš koeficient premic nosilk daljic. Skiciraj si, pa bo marsikaj lažje.
.
Mipe ::
vorantz ::
Se sekata ali ne? V tvojem primeru ni nobena vrednost več kot 1, čeprav se daljici sekata.
pa res :s
@OP: sicer pa tle je algoritm lepo razložen (pa še v slovenščini če ti angleščina dela težave)
http://www.nauk.si/materials/5894/out/#...
Zgodovina sprememb…
- spremenil: vorantz ()
amacar ::
On ne rabi algoritma pometanja, ker preverja le za 2 daljici naenkrat.
Recimo osnovno preveranje. Tu seveda niso zajeti robni primeri, kjer daljici sovpadata ali leži ena na drugi.
Osnova testa je vektorski produkt. Vektorski produkt dveh točk P1(x1, y1) in P2(x2, y2) se glasi:
P1 x P2 = x1*y2 - x2*y1
Glede na predznak rezultata lahko preverimo, ali točki ležita na isti strani daljice (isti predznak) ali na različnih straneh (različna predznaka).
Po urejanju enačb dobimo sledeče:
Definirajmo še dve vrednosti in sicer
Najprej preverimo, ali je D enak 0. Če je, sta daljici vzporedni in smo končali. Če nista, preverimo še dva pogoja in sicer:
Če oba pogoja držita, potem se daljici sekata, zato lahko nadaljujemo z naslednjim korakom, kjer izračunamo točko presečišča.
Recimo osnovno preveranje. Tu seveda niso zajeti robni primeri, kjer daljici sovpadata ali leži ena na drugi.
Osnova testa je vektorski produkt. Vektorski produkt dveh točk P1(x1, y1) in P2(x2, y2) se glasi:
P1 x P2 = x1*y2 - x2*y1
Glede na predznak rezultata lahko preverimo, ali točki ležita na isti strani daljice (isti predznak) ali na različnih straneh (različna predznaka).
Po urejanju enačb dobimo sledeče:
D = (y4 - y3)*(x2 - x1) - (x4 - x3)*(y2 - y1) A = (x4 - x3)*(y1 - y3) - (y4 - y3)*(x1 - x3) B = (x2 - x1)*(y1 - y3) - (y2 - y1)*(x1 - x3)
Definirajmo še dve vrednosti in sicer
UA = A/D UB = B/D
Najprej preverimo, ali je D enak 0. Če je, sta daljici vzporedni in smo končali. Če nista, preverimo še dva pogoja in sicer:
0 <= UA <= 1 0 <= UB <= 1
Če oba pogoja držita, potem se daljici sekata, zato lahko nadaljujemo z naslednjim korakom, kjer izračunamo točko presečišča.
ktka ::
Se opravičujem, če se zdi da sem zelo trda...
Vektorski produkt razumem...sam ne vem kako si prišel do tistih treh enačb?
In zakaj potem preverjamo če sta UA in UB med 0 in 1?
Se res opravičujem ampak bi rada nalogo razumela.
Hvala
Vektorski produkt razumem...sam ne vem kako si prišel do tistih treh enačb?
In zakaj potem preverjamo če sta UA in UB med 0 in 1?
Se res opravičujem ampak bi rada nalogo razumela.
Hvala
ktka ::
Hvala za vse nasvete. S skupnimi močmi sem nalogo uspela narediti.
Zdej pa tebe amacar vprašam: Zakaj je treba A in B deliti z D? oziroma kaj to pomeni v matematičnem smislu?
In zakaj morata biti UA in UB med 0 in 1?
Najlepša hvala.
Zdej pa tebe amacar vprašam: Zakaj je treba A in B deliti z D? oziroma kaj to pomeni v matematičnem smislu?
In zakaj morata biti UA in UB med 0 in 1?
Najlepša hvala.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | enačba krožniceOddelek: Šola | 1670 (1149) | Unilseptij |
» | Matematika - pomoč (strani: 1 2 3 )Oddelek: Šola | 26798 (23373) | daisy22 |
» | [SQL] časovno obdobjeOddelek: Programiranje | 1390 (1218) | R33D3M33R |
» | [C/C++] Konveksna lupina - brute forceOddelek: Programiranje | 1899 (1773) | WarpedGone |
» | Program v c++Oddelek: Programiranje | 2011 (1680) | Bela01 |