Chủ Nhật, 18 tháng 9, 2011

output

SQL> /


user open 0;

host open 1;

car behind 2;

WIN: if user switched;





user open 0;

host open 1;

car behind 2;

WIN: if user switched;





user open 1;

host open 2;

car behind 0;

WIN: if user switched;





user open 1;

host open 2;

car behind 0;

WIN: if user switched;





user open 0;

car behind 0;

WIN: if user stayed





user open 0;

host open 2;

car behind 1;

WIN: if user switched;





user open 2;

car behind 2;

WIN: if user stayed





user open 1;

host open 2;

car behind 0;

WIN: if user switched;





user open 1;

car behind 1;

WIN: if user stayed





user open 2;

host open 0;

car behind 1;

WIN: if user switched;





user open 2;

car behind 2;

WIN: if user stayed





user open 0;

host open 2;

car behind 1;

WIN: if user switched;





user open 1;

host open 0;

car behind 2;

WIN: if user switched;





user open 0;

car behind 0;

WIN: if user stayed





user open 2;

host open 1;

car behind 0;

WIN: if user switched;





user open 0;

host open 1;

car behind 2;

WIN: if user switched;





user open 1;

host open 0;

car behind 2;

WIN: if user switched;





user open 2;

host open 0;

car behind 1;

WIN: if user switched;





user open 2;

car behind 2;

WIN: if user stayed





user open 1;

car behind 1;

WIN: if user stayed





TOTAL WINS if switched: 13





TOTAL WINS if stayed: 7







PL/SQL procedure successfully completed.

that forever known Monty Hall problem...

-- written by Pensee
-- date:  09/18/2011
set serveroutput on

declare

get_car NUMBER :=0;

user_pick NUMBER NULL;

host_pick NUMBER NULL;

win_cnt NUMBER :=0;

lose_cnt NUMBER :=0;

begin

for i in 1..20 loop

user_pick := to_number(trunc(dbms_random.value(0,3))); /*-- door 0,1,2*/

get_car := to_number(trunc(dbms_random.value(0,3))); /*-- 0=none, 1=car*/

if user_pick <> get_car then

for choice in 0 ..2 loop

if (choice <> user_pick and choice <> get_car) then

host_pick := choice;

end if;

end loop;

dbms_output.put_line('user open '

user_pick

'; ' );

dbms_output.put_line('host open '

host_pick

'; ');

dbms_output.put_line('car behind '

get_car

'; ' );

if (user_pick <> get_car) and (user_pick <> host_pick) THEN

dbms_output.put_line('WIN: if user switched; '

CHR (10));

win_cnt := win_cnt +1;

end if;



elsif user_pick = get_car THEN

dbms_output.put_line('user open '

user_pick

'; ' );

dbms_output.put_line('car behind '

get_car

'; ' );

dbms_output.put_line('WIN: if user stayed '

CHR (10));

lose_cnt := lose_cnt + 1;



end if;

end loop;

dbms_output.put_line('TOTAL WINS if switched: '

win_cnt

CHR (10));

dbms_output.put_line('TOTAL WINS if stayed: '

lose_cnt

CHR (10));

end;

/