コンテンツにスキップするには Enter キーを押してください

mzsm.me 記事

確率を指定してリストからランダムに取得する

仕事で、指定した確率(重み付け)に従ってリストの中からランダムで一つ取得するという仕組みが必要になったのでこんなのを書いてみました。
言語はPythonです。NYSLでどーぞ。

import random

def choose(candidates, probabilities):
    probabilities = [sum(probabilities[:x+1]) for x in range(len(probabilities))]
    if probabilities[-1] > 1.0:
        #確率の合計が100%を超えていた場合は100%になるように調整する
        probabilities = [x/probabilities[-1] for x in probabilities]
    rand = random.random()
    for candidate, probability in zip(candidates, probabilities):
        if rand < probability:
            return candidate
    #どれにも当てはまらなかった場合はNoneを返す
    return None

candidatesに選択したいものを並べたリストを、probabilitiesに確率(重み付け)のリストを渡すと、その確率に沿ってcandidatesからひとつ取得します。
choose(['A', 'B', 'O', 'AB'], [0.4, 0.2, 0.3, 0.1])で10万回施行
A : 40037
B : 20089
AB : 9913
O : 29961

probabilitiesの合計が100%未満の場合はNoneが返ることがあります。
choose(['foo', 'bar', 'baz'], [0.1, 0.2, 0.3])で10万回施行
foo : 10274
bar : 19905
baz : 29746
None : 40075

逆に100%を超えている場合は、全部で100%になるように確率を調整します。
choose(['hoge', 'fuga', 'piyo'], [0.4, 0.6, 1.0])で10万回施行
hoge : 19794
fuga : 30023
piyo : 50183


1件のコメント

エールド・ル・レクチェ (新潟麦酒)

image
image

うちの近所の酒屋さんは、どちらかというと日本酒とワインがメインで、ビールはあまり多く置いていないのですが、新潟麦酒というなかなか見かけないクラフトビール(地ビール)メーカーの銘柄を扱っているので重宝しています。

で、その新潟麦酒の中で今回は洋梨を使ったフルーツビールを飲んでみました。

パッケージの文言をそのまま引用すると、

洋梨の中でも最高級と言われる新潟県産ル・レクチェをふんだんに入れた発泡酒

とあります。

「発泡酒」となっているのは、日本の酒税法で定められていない副原料(つまりこの場合は洋梨)を使っているからであって、別に麦芽をケチッているわけではないですよ…と。

グラスに鼻を近づけると洋梨の香りが漂ってきます(当たり前か)。

一口飲んでみると、たしかに洋梨っぽい味はするけどそこまで強くはなくて、チューハイみたいに甘いってわけではないですねー。

でもそのおかげか苦味が抑えられているので、ビールが苦手な人でも飲みやすいと思います。

お好みで瓶の底に溜まっている酵母を注ぎ入れるともう少し甘くなりますよー。


コメントする

ザ・プレミアム・モルツ黒 (サントリー)

image
image

批評なんて難しいことはできないっていうか、何を呑んでも美味しいって思うような人なので、ただの感想、いやただのチラシの裏。何を呑んだかの備忘録レベルですよ、はい。

…とは言ってみたものの、これはかなり美味しい!!

ブラックチョコレートを飲んでるみたいな香ばしくて心地よいです。
あとパッケージもかっこいいし。

のどが渇いてたから最初一気に飲んじゃって、そのあとすぐ美味しさに気付いたから、もったいないことしちゃったなぁ(´・ω・`)…と。
つぎは最初からゆっくり、時間をかけて飲みたい。


コメントする

Hello world!

というわけではじめます。

今まで何度かブログ書くぞー!!って意気込んでは頓挫してきたので、今回は気負わずに適当にやろうと思いまーす


コメントする