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.
Chủ Nhật, 18 tháng 9, 2011
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;
/
-- 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;
/
Đăng ký:
Bài đăng (Atom)