hackerman Ierakstīts Decembris 12, 2009 Share Ierakstīts Decembris 12, 2009 Sveiki! Man ir uzdots uzdevums aprēķināt varbūtību uzmest skaitli ar metamo kauliņu. Metamais kauliņš tiek mests vairākas reizes. Metienu vērtības summējās. Piemēram, kauliņš tiek mests 3 reizes, uzkrīt 1;3;6 - kopā 10. Nu un man vajag uzrakstīt funkciju, kas aprēķina varbūtību uzmest kādu skaitli. Es internetā uzgāju diezgan labu linku: http://www.math.csusb.edu/faculty/stanton/m262/intro_prob_models/calcprob.html Kopumā tur ir diezgan labi viss paskaidrots. Bet man problēmas sagādā tas, ka tajā linkā doto formulu es nemāku izmantot. Algebriski, protams, es viņu izprotu, bet vienkārši skripta veidā es to nemāku pierakstīt - neļauj man izmantot polinomus (nedefinētu x'u). Kopumā to vajag dabūt Pythonam saprotamā valodā. Vēl man bija doma ģenerēt visas iespējamās summas, un tad skaitīt, cik iespējas tad īsti ir, bet tas veids man neliekas efektīvs pie gadījuma, kad kauliņš tiek mests, piemēram, 5 reizes. Jo tad sanāk pavisam iespējami 3125 dažādi gadījumi. Link to comment Share on other sites More sharing options...
Vilx- Decembris 12, 2009 Share Decembris 12, 2009 3125 reizes datoram ir viens spļāviens. Pie 10 gan būs interesantāk, un pie 20 jau pavisam labi. Es ieteiktu apsvērt iteratīvu pieeju. Ķipa, domā tā - ja Tu zini šos skaitļus N metieniem, kā Tu, par pamatu ņemot šo informāciju, varētu aprēķināt skaitļus N+1 metienam? Pašam šajā nakts stundā slinkums domāt, un vispār, tas ir Tavs mājasdarbs. Bet šādai pieejai vajadzētu strādāt, un samērā veikli arī ļoti lielam metienu skaitam. Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 13, 2009 Share Decembris 13, 2009 Ir divi varianti, ka risinat sho uzdevumu. variants a un variants b! Pirmais veids ir random gjenerators! Uzraksti funckiaju, kas ar random met kaulinju x reizes un atgriezh true/false, ja vajadzigais skaitlis uzkrita/neuzkrita. Izpildot sho funkciju pietiekami daudz reizes un saglabajot uzkrutusho/kopeju izsaukumu skaitu, tu vari diezgan precizi noteikt varbutibu. Otrs variants ir matematika! Parastajam metamajam kaulinjam varbutiba uzmest kadu skaitli ir 1/6. To var rekinat ari no otra gala. Proti - kada ir varbutiba, ka tu neuzmetisi velamo skaitli ar 1 gajienu? 1 - 1/6 = 5/6. Kada varbutiba, ka ar diviem gajieniem neuzmetisi - 5/6 * 5/6. Tatad, varbutiba, ka ar 2 gajieniem uzmetisi ir 1 - 5/6*5/6.. Beefs Link to comment Share on other sites More sharing options...
Vilx- Decembris 13, 2009 Share Decembris 13, 2009 Ahem, DeadBeef, pēc Tavas otrās metodes, kāda tad sanāk varbūtība, ka ar 2. gājienu uzmetīsi 7? Link to comment Share on other sites More sharing options...
nemirst Decembris 14, 2009 Share Decembris 14, 2009 (labots) Vēl man bija doma ģenerēt visas iespējamās summas, un tad skaitīt, cik iespējas tad īsti ir, bet tas veids man neliekas efektīvs pie gadījuma, kad kauliņš tiek mests, piemēram, 5 reizes. Jo tad sanāk pavisam iespējami 3125 dažādi gadījumi. varbutiba=VisasIespejasUzmestSkaitli/VisiUzmesanasVeidi VisasIespejasUzmestSkaitli metot to N reizes vajadzētu aprēķināt kaut kā tā kā Vilx- teica - par pamatu ņemot N-1 iespējamās summas. To vajadzētu varēt aprēķināt vienkārši reizinot ar 6(vertību skaits uz metamā kauliņa) iespējamās reizes pie N-1: VisasIespejasUzmestSkaitli=VisasIespejasUzmestSkaitli(N-1)*6. Problēma laikam paliek tikai uzrakstīt funkciju(gan jau rekursīvu), kas aprēķina iespējamos saskaitāmos, lai dabūtu konkrētu skaitli. Šķiet, ka tur ir darīšana ar permutācijām. Labots Decembris 14, 2009 - nemirst Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 14, 2009 Share Decembris 14, 2009 Ahem, DeadBeef, pēc Tavas otrās metodes, kāda tad sanāk varbūtība, ka ar 2. gājienu uzmetīsi 7? varbutiba uzmest ar 2tro gajienu 7 = 1 - varbutiba neuzmest 7 ar diviem gajieniem. varbutiba uzmest 7 = 0; varbutiba neuzmest 7 = 1; varbutiba neuzmest ar diviem metieniem 7 = 1 * 1. varbutiba uzmest 7 ar diviem metieniem ir 1 - (1 * 1) = 0. Beefs Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 14, 2009 Share Decembris 14, 2009 (labots) Atvainojos! Nesapratu uzdevumu! Domaju, tada gadijuma rekursijai uzdotu jautajumu - kada ir varbutiba uzmest x ar y metieniem. Rekursija loti viegli shkjetinatos valja - njemam n no 1 - 6 un izsaucam pashi sevi ar x - n, y - 1. Ja x == 0 && y == 0 atgriezham 1. Problema butu, ka rekursija nenormali saktu zaroties jau 3saja limeni, tadelj ieviesham blakus "hash" tabulu. 2dimensiju masivu ar x = metienu skaits un y = nepiecieshami punkti. Masiva elements = -1 neaizpildits vai aizpildits ar varbutibu. Shadi daroties ieverojami samazinasim rekursiju, jo aprekins bus jadara tikai punkti*metieni reizes. Piemeram - ja gribesim zinat varbutibu ar 10 metieniem uzmest 50, tad pastaves tikai 500 dazhadas iespejamas varbutibas, kuras pareizi jasasume. Rakstot bez tas tabulas bus dibens, bet ar tabulu uzdevums ir reali izpildams reala laika. Beefs Labots Decembris 14, 2009 - 0xDEAD BEEF Link to comment Share on other sites More sharing options...
nemirst Decembris 15, 2009 Share Decembris 15, 2009 Nu un man vajag uzrakstīt funkciju, kas aprēķina varbūtību uzmest kādu skaitli. Hmm, varbūtība uzmest kādu skaitli vienmēr būs 1/6, ne tā? Ja vien tev nav dots metienu skaits un uzdevums neskan aptuveni šādi: "Kāda varbūtība uzmest skaitli X metot metamo kauliņu N reizes?". Bet, ja uzdevums skan "Kāda varbūtība uzmest skaitli N?", tad atbilde ir 1/6, manuprāt. Vienalga, vai tas ir 1-6, vai lielāks par 6. Piemēram, skaitli 20 var uzmest tad, ja ir jau uzmesti vismaz 14-19 (punkti) un varbūtība uzmest 20 metot kauliņu pie jebkura no šī punktu daudzuma ir 1/6. Kāds īsti ir precīzs uzdevuma teksts? Link to comment Share on other sites More sharing options...
Vilx- Decembris 15, 2009 Share Decembris 15, 2009 Ai, taču beidz piekasīties! Izlasi visu postu, doma ir skaidra. Tu met metamo kauliņu N reizes, un rezultātus summē. Kāda ir varbūtība, ka summa būs X (kur X ir robežās no N līdz 6*N)? Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 16, 2009 Share Decembris 16, 2009 Uzdevumu var vienkāršot šādā veidā: Ja ir doti N metieni un jāizreķinā varbūtību, ka sanāks skaitlis A, tad var ņemt N kauliņus un izreķināt varbūtību, ka metot visus uzreiz, sanāks A. Līdz ar to, uzdevumu var pievest pie vienas formulas un neizmantot rekursiju. Un ka tu to iztelojies? Vienkarshi jau ta pateikt, bet gruti izpildit! Grozies ka gribi, bet tomer vajag zinat vismaz to, cik dazhados veidos ir iespejams uzmest to summu. Metot vienu kaulinju - easy - tikai 1na veida var uzmest skaitli! Bet metot 2vus kaulinjus jau viss ir loti sarezgijies, jo, kamer uzmest 2 un 12 ir tikai viens iespejams variants un attiecigi varbutiba 1/6*1/6, tikmer uzmest 7 var loti dazados variantos. Rekini no kura gala gribi, bet atdursies pret to, ka vajag kaut kada veida parslasit sho derigo variantu skaitu. Beefs Link to comment Share on other sites More sharing options...
nemirst Decembris 16, 2009 Share Decembris 16, 2009 Iekopē pareizo kombinatorikas formulu un miers. Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 16, 2009 Share Decembris 16, 2009 Gudri [slēpts] nav malku cirst! Lūdzu formulu studijā! ... kaut gan diezgan iespējams, ka tās sumas galu galā un pēc visas "uber sarežģītās" rēķināšanas vienkārši paņems un sadalīsies pēc normāl-sadalījuma prinicpa. Ej tikai pēc tam to pierādi! 0xDEAD BEEF Marš uz skolu! Uzmetot N kauliņus, tev sanāk summa S. Katrai summai ir noteikta varbūtība, kuru ir elementāri apreķināt ar kombinatorikas formulam. Link to comment Share on other sites More sharing options...
japets Decembris 16, 2009 Share Decembris 16, 2009 Ja vēlaties ar kombinatoriku rēķināt, tad, manuprāt, uzdevumu var formulēt šādi: Cik dažādos veidos N konfektes (summa) var paņemt X bērni (metienu skaits) tā, lai katrs būtu paņēmis vismaz vienu, bet nebūtu paņēmis vairāk par 6. Nekad nav patikusi kombinatorika. Bet, manuprāt, sanāk aprēķināt šādi: + cik dažādos veidos konfektes var visi bērni paņemt - atņemt tos gadījumus, kad kāds nav dabūjis (cik dažādos veidos var paņemt X-1 bērni) - atņemt gadījumus, kad kāds ir paņēmis vairāk nekā 6 konfektes (nezinu kā aprēķina) + pieskaitīt gadījumus, kad kāds nav dabūjis konfekti un kāds ir dabūjis vairāk nekā 6 konfektes. Ja nav nekādu papildus uzstādījumu, es ietu kādu rekursijas vai tamlīdzīgu ceļu, bez kombinatorikas. Neesmu eksperts algoritmu sarežģītības aprēķināšanā, bet, manuprāt ar O(X*log(X)) var aprēķināt varbūtību sadalījumu visiem iespējamiem skaitļiem. Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 16, 2009 Share Decembris 16, 2009 (labots) edit: kludijos. Veidu skaits, izskatas, ka vertu palielinaties lineari (notesteju 2 un 3 kauliniem). Tada gadijuma uzdevums paliek vienkāršs. Beefs Labots Decembris 16, 2009 - 0xDEAD BEEF Link to comment Share on other sites More sharing options...
japets Decembris 16, 2009 Share Decembris 16, 2009 Nav ko tukši gvelzt. http://sh.miga.lv/dice.html Izrēķina, cik reizes no visām mestajām izkritīs konkrētā summa. Ceru, ka nekļūdījos... Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 16, 2009 Share Decembris 16, 2009 (labots) Lineāri? 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 3 6 10 15 21 25 27 27 25 21 15 10 6 3 1 10 - 9 = 2 9 - 8 = 4 8 - 7 = 6 Ja var ticet DICE programai.. Beefs Labots Decembris 16, 2009 - 0xDEAD BEEF Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 16, 2009 Share Decembris 16, 2009 Nu paga! Es ieeju DICE un saku, lai uzģenerē priekš 3 skaitļiem. Un re ku rezultāts - augšējā rinda - summa, apakšējā rindā - variantu skaits, ar kuriem var tikt pie tādas summas! 1 = 3 tikai viena veida 1 + 1 + 1 3 = 4 veselos 3 veidos. 1 + 1 + 2, 1 + 2 + 1, 2 + 1 + 1, 6 = 5 veselos 6 veidos... u.t.t. Kā redzi, tad nepieaug lineāri! Beefs Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 16, 2009 Share Decembris 16, 2009 Nē zin.. kas tad tas ir? SUM(1 3 6 10 15 21 25 27 27 25 21 15 10 6 3 1 ) = 216 = 6*6*6 Šitie skaitļi pasaka, cik dažādos veidos var uzmest KATRU summu, ja met 3 kauliņus! Ko tu tur nesaproti? Un jebkurš šīs virknes skaitlis ir viegli pārvēršams par varbūtību, dalot to ar 216! Un virkne joprojām nav lineāra! Zini.. man sāk likties, ka tu nerubī fišku! Beefs Link to comment Share on other sites More sharing options...
japets Decembris 16, 2009 Share Decembris 16, 2009 Leshij, nemētājies ar atzīmēm. Nekā lineāra tur nav. Varbūtību iegūst šos skaitļus izdalot ar 6^[Metienu Skaits]. Joprojām linearitātes nav. Savukārt, ja nepamanījāt, tad skaitļi veido Paskāla trijstūri, tikai ņemot 6 včibriko elementu summu. Nebūtu slinkums, varētu formulu izvest... Link to comment Share on other sites More sharing options...
0xDEAD BEEF Decembris 16, 2009 Share Decembris 16, 2009 Nē, nē un nē! Nejauc variācijas ar varbūtību! ja N = 3 un S = 3, tad pēc tavas loģikas varbūtība ir 1/216, bet patiesībā ir 1/18. Tev vajag saplusot visas variācijas, kas dod vienādu iznākumu! Pēc tavas loģikas varbūtība uzmest 9 (ar 3 metieniem) arī ir 1/18? Ķipa kāda varbūtība satikt dinozauru uz ielas? 50% - vai nu satiksi, vai nesatiksi! Beefs Link to comment Share on other sites More sharing options...
MarisO Decembris 16, 2009 Share Decembris 16, 2009 Savukārt, ja nepamanījāt, tad skaitļi veido Paskāla trijstūri, nuja, reku tieši ir tāda problēma aprakstīta: http://www.mathsisfun.com/pascals-triangle.html skat. Heads and Tails Link to comment Share on other sites More sharing options...
japets Decembris 16, 2009 Share Decembris 16, 2009 Letish, tikai mieru. Atdziesti. Skaitlis 11 ir tas, ko jau minēji - variāciju skaits. Varbūtība, ka abi kauliņi būs 1 (summa 2) ir 1/36. Link to comment Share on other sites More sharing options...
Vilx- Decembris 17, 2009 Share Decembris 17, 2009 Psssst! Mūsu krutajā forumā ir superskripta iespējas! Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!