EgEg, sunku man buvo įsigilinti į tuos išrašytus variantus. Nesuprantu kaip gaunama 5 ir 7 iš viso to sąrašo. Šiaip tikrinant programa geriausiai būtų galimus pasirinkimus atrinkinėti atsitiktiniu būdu. Kiek žinau, yra funkcija, kuri duoda atsitiktinai parenkamas reikšmes, o tada kartojant tą atranką daug kartų mums reikiamo įvykio tikimybė turėtų artėti prie realios reikšmės. Kur matyčiau problemą pirmame sprendime, jog mes išrašydami variantus kelių tos pačios spalvos rutulių pasirinkimus laikome kaip vieną pasirinkimą, kas skaičiuojant tikimybę nėra teisinga.
Pavyzdys: Yra 3 geltoni ir 2 žali rutuliai. Kokia tikimybė, jog traukiant du rutulius abiem atvejais ištrauksime geltoną? Jei variantus išrašysiu tik atsižvelgdamas į rutulius spalvą (į tvarką atsižvelgti nėra būtina) visus variantus gausiu: GŽ GG ŽŽ kurių viso 3 variantus, kai palankių mūsų įvykiui bus 1. Taigi tikimybė yra 1/3. Tačiau jei rutulius dar sunumeruosiu ir laikysiu, jog turiu: G1, G2, G3, Ž1, Ž2 Tada visus variantus gausiu(į tvarką taip pat neatsižvelgsiu): G1Ž1 G2Ž1 G3Ž1 G1Ž2 G2Ž2 G3Ž2 G1G2 G1G3 G2G3 Ž1Ž2 kurių yra 10, o palankių 3, taigi tikimybė 3/10. Gauname dvi skirtingas tikimybes. Kuri jūsų nuomonė yra teisinga?
Tomas PRO +4535
Kad dar būtų aiškiau. Metame monetą du kartus. Galėčiau išskirti tik tokius įvykius; HH,SS,HS. Tada gaučiau, jog tikimybė, kad abu kartus iškris herbas lygi [tex]\dfrac{1}{3}[/tex], bet puikiai žinome, jog tai netiesa, kadangi iš tiesų ji lygi [tex]\dfrac{1}{4}[/tex]. Jog gauti teisingą atsakymą, turėtume įvykius apsirašyti šitaip: H1H2,S1S2,H1S2, S1H2.
EgEg PRO +339
Moneta metant bus HH HS SH SS
Tomas PRO +4535
O su rutuliais kaip būtų?
EgEg PRO +339
Su atsitiktiniu arteja link 4/5, tai turbut tiek ir bus. #include <bits/stdc++.h>
using namespace std;
int main(){
int k[6] = {0,0,1,1,2,2}; // 0 zalia, 1 melyna, 2 geltona int visi = 0; int geri = 0; srand (time(NULL)); ofstream cout("rez.txt"); for (int i = 0; i<1000000; i++){ int r = rand() % 64; int A[3] = {1,1,1}; int B[3] = {1,1,1}; for (int j = 0; j<6; j++){ if(r & (1<<j)){ A[k[j]]++; } else{ B[k[j]]++; } } if(A[0]*A[1]*A[2]==B[0]*B[1]*B[2]){ visi++; if(B[2]>=2){ geri++; } } } cout << "Is viso: " << visi << endl; cout << "Tinka: " << geri;
return 0; }
Tomas PRO +4535
Na tai va. Nes aš labai į kodą neįsigilinau, bet supratau, jog tu tiesiog programiškai išrašinėji variantus, kas reiškia, jog atsakymas priklauso nuo to, ką programai tu užduodi suskaičiuoti.
EgEg PRO +339
Jeigu ir originaliame kode netikrinciau ar jau buvo toks tai duotu 4/5, o jeigu tikrinu tai duoda 5/7.
Originalus kodas tiesiog patikrina visas imanomas kombinacijas.
Tomas PRO +4535
Štai dėl ko, aš ilgai nemėgau tikimybių uždavinių ir dar dabar net ir turėdamas skaičiavimo patirties, dažnai gavęs atsakymą bandau dar persitikrinti, nes yra nemaža tikimybė, jog galiu būti ką netaip supratęs ir paskaičiavęs. Čia ne geometrija, ar aritmetika, kur viskas aišku ir nėra daug galimybių "nukeliauti" kur nors ne ten, nebent pridarysi aritmetinių klaidų.
Tomas PRO +4535
Bet labai gerai, jog MykolasD sukūrė tokią temą su šiuo uždaviniu. Bus labai vertinga tema kitiems forumo dalyviams.
MykolasD PRO +2280
Dėkui Tomui ,Dėkui EgEg sėkmės jums ,o dviprasmybių negali būti tikimybėse ,čia mano klaida čia reikėjo parašyti 1) Parodykite ,kad yra 7 galimybės 2) Apskaičiuokite tikimybę ( variantų daug....) Nežinau ,kaip padaryti ,kad mokiniai suprastų reškia tokių spręsti nereikia