1. ホーム
  2. python

[解決済み] 特定の割合で1を含む二項乱数配列?

2023-06-27 18:02:34

質問

特定の割合で0と1の乱数を生成する効率的な(おそらくMatlabの用語でベクトル化された)方法は何ですか?特にNumpyで?

私のケースは、特殊な 1/3 であるため、私のコードは

import numpy as np 
a=np.mod(np.multiply(np.random.randomintegers(0,2,size)),3)

しかし、少なくとも以下のような状況において、より効率的にこれを処理できる組み込み関数はないのでしょうか? K/N ここでKとNは自然数です。

どのように解決するのですか?

もし私があなたの問題を正しく理解しているなら、あなたは以下の方法で助けを得られるかもしれません。 numpy.random.shuffle

>>> def rand_bin_array(K, N):
    arr = np.zeros(N)
    arr[:K]  = 1
    np.random.shuffle(arr)
    return arr

>>> rand_bin_array(5,15)
array([ 0.,  1.,  0.,  1.,  1.,  1.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,
        0.,  0.])