So just proof the solution with a simulation.
1. Create 1.000.000 families with two children {m,f} 50:50 and born on {sa,su,mo,tu,we,th,fr} 1:7
2. Count chance, that family has two boys 1/4
3. Count chance, that family has two boys, if you know that one child is a boy 1/3
4. Count chance, that family has two boys, if you know that one child is a boy and born on tuesday 13/27
If you program it, it is obvious, that each additional information (one child is a boy, one child is a boy born on tuesday) changes the sample for the probability calculation.
Simple ABAP program
CONSTANTS:
c_female TYPE i VALUE 0,
c_male TYPE i VALUE 1,
c_saturday TYPE i VALUE 0,
c_sunday TYPE i VALUE 1,
c_monday TYPE i VALUE 2,
c_tuesday TYPE i VALUE 3,
c_wednesday TYPE i VALUE 4,
c_thursday TYPE i VALUE 5,
c_friday TYPE i VALUE 6.
TYPES:
BEGIN OF ys_family,
child1_gender TYPE i,
child1_day_of_the_week TYPE i,
child2_gender TYPE i,
child2_day_of_the_week TYPE i,
END OF ys_family.
DATA:
lo_rnd TYPE REF TO cl_random_number,
ls_family TYPE ys_family,
lt_family TYPE TABLE OF ys_family,
li_won TYPE i,
li_lost TYPE i,
li_total TYPE i.
CREATE OBJECT lo_rnd.
CALL METHOD lo_rnd->if_random_number~init.
DO 1000000 TIMES.
ls_family-child1_gender = lo_rnd->if_random_number~get_random_int( 1 ).
ls_family-child1_day_of_the_week = lo_rnd->if_random_number~get_random_int( 6 ).
ls_family-child2_gender = lo_rnd->if_random_number~get_random_int( 1 ).
ls_family-child2_day_of_the_week = lo_rnd->if_random_number~get_random_int( 6 ).
APPEND ls_family TO lt_family.
ENDDO.
WRITE: / 'Chance to have two male children'.
CLEAR: li_won, li_lost.
LOOP AT lt_family INTO ls_family.
ADD 1 TO li_total.
IF ls_family-child1_gender EQ c_male AND
ls_family-child2_gender EQ c_male.
ADD 1 TO li_won.
ELSE.
ADD 1 TO li_lost.
ENDIF.
ENDLOOP.
WRITE: / 'total', li_total, 'Won:', li_won, 'Lost:', li_lost.
li_won = li_won * 100 / li_total.
li_lost = li_lost * 100 / li_total.
li_total = li_total * 100 / li_total.
WRITE: / 'total', li_total, '%', 'Won:', li_won, '%', 'Lost:', li_lost, '%'.
ULINE.
WRITE: / 'Chance to have two male children, if you know that first child is male'.
CLEAR: li_won, li_lost.
LOOP AT lt_family INTO ls_family.
IF ls_family-child1_gender EQ c_male OR
ls_family-child2_gender EQ c_male.
ADD 1 TO li_total.
IF ls_family-child1_gender EQ c_male AND
ls_family-child2_gender EQ c_male.
ADD 1 TO li_won.
ELSE.
ADD 1 TO li_lost.
ENDIF.
ENDIF.
ENDLOOP.
WRITE: / 'total', li_total, 'Won:', li_won, 'Lost:', li_lost.
li_won = li_won * 100 / li_total.
li_lost = li_lost * 100 / li_total.
li_total = li_total * 100 / li_total.
WRITE: / 'total', li_total, '%', 'Won:', li_won, '%', 'Lost:', li_lost, '%'.
ULINE.
WRITE: / 'Chance to have two male children, if you know that first child is male and born on tuesday'.
CLEAR: li_won, li_lost.
LOOP AT lt_family INTO ls_family.
IF ls_family-child1_gender EQ c_male OR
ls_family-child2_gender EQ c_male.
IF ( ls_family-child1_gender EQ c_male AND
ls_family-child1_day_of_the_week EQ c_tuesday ) OR
( ls_family-child2_gender EQ c_male AND
ls_family-child2_day_of_the_week EQ c_tuesday ).
ADD 1 TO li_total.
IF ls_family-child1_gender EQ c_male AND
ls_family-child2_gender EQ c_male.
ADD 1 TO li_won.
ELSE.
ADD 1 TO li_lost.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
WRITE: / 'total', li_total, 'Won:', li_won, 'Lost:', li_lost.
li_won = li_won * 100 / li_total.
li_lost = li_lost * 100 / li_total.
li_total = li_total * 100 / li_total.
WRITE: / 'total', li_total, '%', 'Won:', li_won, '%', 'Lost:', li_lost, '%'.
Output example
Chance to have two male children
total 1.000.000 Won: 250.442 Lost: 749.558
total 100 % Won: 25 % Lost: 75 %
Chance to have two male children, if you know that first child is male
total 750.485 Won: 250.442 Lost: 499.943
total 100 % Won: 33 % Lost: 67 %
Chance to have two male children, if you know that first child is male and born on Tuesday
total 138.231 Won: 66.430 Lost: 71.701
total 100 % Won: 48 % Lost: 52 %
1. Create 1.000.000 families with two children {m,f} 50:50 and born on {sa,su,mo,tu,we,th,fr} 1:7
2. Count chance, that family has two boys 1/4
3. Count chance, that family has two boys, if you know that one child is a boy 1/3
4. Count chance, that family has two boys, if you know that one child is a boy and born on tuesday 13/27
If you program it, it is obvious, that each additional information (one child is a boy, one child is a boy born on tuesday) changes the sample for the probability calculation.
CONSTANTS:
c_female TYPE i VALUE 0,
c_male TYPE i VALUE 1,
c_saturday TYPE i VALUE 0,
c_sunday TYPE i VALUE 1,
c_monday TYPE i VALUE 2,
c_tuesday TYPE i VALUE 3,
c_wednesday TYPE i VALUE 4,
c_thursday TYPE i VALUE 5,
c_friday TYPE i VALUE 6.
TYPES:
BEGIN OF ys_family,
child1_gender TYPE i,
child1_day_of_the_week TYPE i,
child2_gender TYPE i,
child2_day_of_the_week TYPE i,
END OF ys_family.
DATA:
lo_rnd TYPE REF TO cl_random_number,
ls_family TYPE ys_family,
lt_family TYPE TABLE OF ys_family,
li_won TYPE i,
li_lost TYPE i,
li_total TYPE i.
CREATE OBJECT lo_rnd.
CALL METHOD lo_rnd->if_random_number~init.
DO 1000000 TIMES.
ls_family-child1_gender = lo_rnd->if_random_number~get_random_int( 1 ).
ls_family-child1_day_of_the_week = lo_rnd->if_random_number~get_random_int( 6 ).
ls_family-child2_gender = lo_rnd->if_random_number~get_random_int( 1 ).
ls_family-child2_day_of_the_week = lo_rnd->if_random_number~get_random_int( 6 ).
APPEND ls_family TO lt_family.
ENDDO.
WRITE: / 'Chance to have two male children'.
CLEAR: li_won, li_lost.
LOOP AT lt_family INTO ls_family.
ADD 1 TO li_total.
IF ls_family-child1_gender EQ c_male AND
ls_family-child2_gender EQ c_male.
ADD 1 TO li_won.
ELSE.
ADD 1 TO li_lost.
ENDIF.
ENDLOOP.
WRITE: / 'total', li_total, 'Won:', li_won, 'Lost:', li_lost.
li_won = li_won * 100 / li_total.
li_lost = li_lost * 100 / li_total.
li_total = li_total * 100 / li_total.
WRITE: / 'total', li_total, '%', 'Won:', li_won, '%', 'Lost:', li_lost, '%'.
ULINE.
WRITE: / 'Chance to have two male children, if you know that first child is male'.
CLEAR: li_won, li_lost.
LOOP AT lt_family INTO ls_family.
IF ls_family-child1_gender EQ c_male OR
ls_family-child2_gender EQ c_male.
ADD 1 TO li_total.
IF ls_family-child1_gender EQ c_male AND
ls_family-child2_gender EQ c_male.
ADD 1 TO li_won.
ELSE.
ADD 1 TO li_lost.
ENDIF.
ENDIF.
ENDLOOP.
WRITE: / 'total', li_total, 'Won:', li_won, 'Lost:', li_lost.
li_won = li_won * 100 / li_total.
li_lost = li_lost * 100 / li_total.
li_total = li_total * 100 / li_total.
WRITE: / 'total', li_total, '%', 'Won:', li_won, '%', 'Lost:', li_lost, '%'.
ULINE.
WRITE: / 'Chance to have two male children, if you know that first child is male and born on tuesday'.
CLEAR: li_won, li_lost.
LOOP AT lt_family INTO ls_family.
IF ls_family-child1_gender EQ c_male OR
ls_family-child2_gender EQ c_male.
IF ( ls_family-child1_gender EQ c_male AND
ls_family-child1_day_of_the_week EQ c_tuesday ) OR
( ls_family-child2_gender EQ c_male AND
ls_family-child2_day_of_the_week EQ c_tuesday ).
ADD 1 TO li_total.
IF ls_family-child1_gender EQ c_male AND
ls_family-child2_gender EQ c_male.
ADD 1 TO li_won.
ELSE.
ADD 1 TO li_lost.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
WRITE: / 'total', li_total, 'Won:', li_won, 'Lost:', li_lost.
li_won = li_won * 100 / li_total.
li_lost = li_lost * 100 / li_total.
li_total = li_total * 100 / li_total.
WRITE: / 'total', li_total, '%', 'Won:', li_won, '%', 'Lost:', li_lost, '%'.
Output example
Chance to have two male children
total 1.000.000 Won: 250.442 Lost: 749.558
total 100 % Won: 25 % Lost: 75 %
Chance to have two male children, if you know that first child is male
total 750.485 Won: 250.442 Lost: 499.943
total 100 % Won: 33 % Lost: 67 %
Chance to have two male children, if you know that first child is male and born on Tuesday
total 138.231 Won: 66.430 Lost: 71.701
total 100 % Won: 48 % Lost: 52 %
No comments:
Post a Comment