69739


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


CC BY-SA 4.0
2020-08-20T13:21:45.867
69727
2020-08-21T01:18:08.763
2020-08-20T23:21:05.977
36856
36856
question
python python3
リスト内の要素を一定の確率で選び出す方法


おそらくランダム自体はそれ自体が扱うことがとても難しいことだと思いますが  
[［CEDEC 2014］ナムコ作品で見る乱数の歴史。「ゲーム世界を動かすサイコロの正体 ～
往年のナムコタイトルから学ぶ乱数の進化と応用」レポート](https://www.4gamer.net/games/042/G004287/20140905040/)

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

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

ですね。

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

[code]

    import random
    
    hoges = [1, 2, 3]
    
    for e in hoges:
      if random.random() < 0.5:
        print(e)
    
[/code]

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

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

[code]

    import random
    
    hoges = [1, 2, 3]
    
    for e in hoges:
      if random.random() < 0.3:
        print(e)
    
[/code]


CC BY-SA 4.0
2020-08-20T23:34:09.327
69739
2020-08-21T01:18:08.763
2020-08-21T01:18:08.763
9008
9008
69727
answer