このディレクトリの索引
#  990 :デフォルトの名無しさん :sage :2013/03/16(土) 11:04:28.09
#  
#  りんごが当たる確率20% 
#  みかんが当たる確率35% 
#  ばななが当たる確率45% 
#  
#  これをコードにしたいんですが、この仕組みはどう実装していいのかわかりません 
#  言語は特にこだわりはないのですが、ヒントをください 
#  
#  991 :デフォルトの名無しさん :sage :2013/03/16(土) 11:09:36.39
#  [0.0, 1.0)の乱数(x)を生成し、 
#  x < 0.2 なら りんご 
#  0.2 <= x < 0.55 なら みかん 
#  0.55 <= x なら ばなな 
#  
#  995 :デフォルトの名無しさん :2013/03/16(土) 12:21:55.33
#  >>990 
#  そのくらい自分で考えられない知恵遅れがプログラミングなんかに手を出すな 
#  

:- op(300,xf,'%').

'りんごが当たる確率20%'(20 '%').

'みかんが当たる確率35%'(35 '%').

'ばななが当たる確率45%'(45 '%').

当たる確率(りんご,_当たる確率 '%') :-
       'りんごが当たる確率20%'(_当たる確率 '%').
当たる確率(みかん,_当たる確率 '%') :-
       'みかんが当たる確率35%'(_当たる確率 '%').
当たる確率(ばなな,_当たる確率 '%') :-
       'ばななが当たる確率45%'(_当たる確率 '%').

'りんご・みかん・ばななのどれかを取り出す'(_どれか) :-
        一から百の範囲の乱数(_乱数),
        割り当てた数範囲にある(_どれか,_乱数).

一から百の範囲の乱数(_乱数) :-
        _乱数 is random(100) + 1.

割り当てた数範囲にある(りんご,_乱数) :-
        between(1,20,_乱数).
割り当てた数範囲にある(みかん,_乱数) :-
        between(21,55,_乱数).
割り当てた数範囲にある(ばなな,_乱数) :-
        between(56,100,_乱数).

標本として用意すべき個数(_物,_総標本数,_標本として用意すべき個数) :-
        当たる確率(_物,_当たる確率 '%'),
        _標本として用意すべき個数 is truncate((_総標本数 * _当たる確率 / 100) + 0.5).


%  「割り当てた数範囲にある」と確率の関係がうまく説明できていない。