Python
numpy
二項分布

確率 epsilon で1を出力

実施したいこと

確率$\epsilon, (0 \le \epsilon \le 1)$でランダムに1を出力する

コード

import numpy.random import *

## 0~1までの乱数を設定
tmp = rand()
if tmp <= epsilon:
  output = 1
else:
  output = 0
print(output)

とすれば、outputに確率$\epsilon$で$1$が入りますが、(library importを除き)1行で完結するには

import numpy as np

output = np.random.binomial(1,epsilon)

でOK.

検証

念のため、やっときましょう。

epsilon = 0.2
N = 100

tmp_list = []
for i in range(N):
    a = np.random.binomial(1, epsilon)
    tmp_list.append(a)

print(sum(tmp_list)/N) #0.22

みなさんもepsilonを他の値にかけてやってみて下さい。
ただ、サンプル数$N$が小さいと、結構ブレてしまうのは注意です。