高校1年生の問題だそうで。
■ 問題
袋A,B,C,Dがあり、それぞれに4枚のカードが入っている。
袋のカードには1から4までの番号がつけられている。
袋A,B,C,Dからカード1枚ずつ取り出し、出た数をそれぞれa,b,c,dとする。
出た数a,b,c,dによって次のように得点を定める。”a≦b≦c≦d のときは(d-a+1)点、それ以外は0点”
得点が1点となる確率を求めよ。
では解いていってみます。
まずカードの入る袋を作ります
create table bag(card int unsigned not null,primary key(card));
4枚の1,2,3,4と書かれたカードが同じように入ってるそうなので入れます
insert into bag (card) values (1),(2),(3),(4);
全部で何通りあるのか数えてみます
select count(*) from bag as A, bag as B, bag as C, bag as D ; +----------+ | count(*) | +----------+ | 256 | +----------+
なるほど、256通りですね(掛けたほうが早いだろ
さてここで
”a≦b≦c≦d のときは(d-a+1)点、それ以外は0点”
なるほど、a≦b≦c≦d じゃないときはどうでもいいようなのでこれで絞ってみましょう
select count(*) from bag as A, bag as B, bag as C, bag as D where A.card <= B.card and B.card <= C.card and C.card <= D.card ; +----------+ | count(*) | +----------+ | 35 | +----------+
お、だいぶ減った
得点が1点となる確率を求めよ。
んじゃさらに絞ろう
select count(*) from bag as A, bag as B, bag as C, bag as D where A.card <= B.card and B.card <= C.card and C.card <= D.card and D.card - A.card + 1 = 1 ; +----------+ | count(*) | +----------+ | 4 | +----------+
なるほど全部が256通りで得点が1になるのが4通りなので
か。ちなみにこの4通りは
select A.card as a, B.card as b, C.card as c, D.card as d, D.card - A.card + 1 as score from bag as A, bag as B, bag as C, bag as D where A.card <= B.card and B.card <= C.card and C.card <= D.card and D.card - A.card + 1 = 1 ; +---+---+---+---+-------+ | a | b | c | d | score | +---+---+---+---+-------+ | 1 | 1 | 1 | 1 | 1 | | 2 | 2 | 2 | 2 | 1 | | 3 | 3 | 3 | 3 | 1 | | 4 | 4 | 4 | 4 | 1 | +---+---+---+---+-------+
ぞろ目でした。よい子はこんな解き方しないように。