リスト内の要素を一定の確率で選び出す方法

投稿者: Anonymous

幾つかのint型の要素を持つリストがあるとします.
そのリストに対して,ある確率で要素を選びだしたいのですがいいアイデアが思いつきません.
具体的には50%の確率で選びたいです.50%の場合,各要素に対して(選ぶ or 選ばない)という実装ができると思うのですが,パーセンテージを変えたい場合に対応できないと思うので,あえて50%と表現しました.

解決

おそらくランダム自体はそれ自体が扱うことがとても難しいことだと思いますが
[CEDEC 2014]ナムコ作品で見る乱数の歴史。「ゲーム世界を動かすサイコロの正体 ~ 往年のナムコタイトルから学ぶ乱数の進化と応用」レポート

質問者さんが実際にやりたいことはコメント部にある

この場合の50%というのは各要素をそれぞれ選び出す確率です.その例ですと,10を選ぶ確率50%, 20を選ぶ確率50%,…のようになります

ですね。

下記のようにリストをすべて回して各々を50%の確率で選べばできます。
random.random()0.0以上1.0未満の値を返すので、0.0以上0.5未満のときというif文の条件は50%のときと言い換えれます。

import random

hoges = [1, 2, 3]

for e in hoges:
  if random.random() < 0.5:
    print(e)

50%の場合,各要素に対して(選ぶ or 選ばない)という実装ができると思うのですが,パーセンテージを変えたい場合に対応できないと思うので,あえて50%と表現しました.

上記コードは"選ぶ"場合のみがコードで表現されています。"選ばない"はわざわざコードで表現する必要はないので、していません。また50%以外にも例えば30%で選びだしたいなら、0.5のところを0.3にすればできます。

import random

hoges = [1, 2, 3]

for e in hoges:
  if random.random() < 0.3:
    print(e)
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *