Generator.geometric – 幾何分布から乱数配列を作成する方法

Generator.geometricは、幾何分布から乱数配列を生成するジェネレータメソッドです。

ベルヌーイ試行は、取り得る結果が成功か失敗かの2つのみであり、各試行において成功の確率が同じであるランダム試行です。例として、コイン投げが挙げられます。そして幾何分布は、ベルヌーイ試行を繰り返して初めて成功させるまでの試行回数Xの分布です。

このGenerator.geometricについて解説していきます。

目次

1. 書式

Generator.geometric

書き方:

Generator.geometric(p, size=None)

パラメーター:

p: float or array_like of floats
個々の試行における成功確率
size: int or tuple of ints, optional
出力する配列のshapeを指定する。デフォルト値のNoneの場合で、かつ、pがスカラーの場合、1つの乱数の値を返す。それ以外の場合は、np.array(p).sizeの乱数を生成する。

戻り値: 

out: ndarray or scalar
パラメータを設定した幾何分布からの乱数を出力する。

2. サンプルコード

それでは、サンプルコードを見ていきましょう。

まずは、random.default_rng コンストラクタでジェネレータオブジェクトを作成します。『numpy.random.default_rng – 乱数生成のためのジェネレータオブジェクトの作成』に目を通しておいてください。

In [1]:
import numpy as  np
rng = np.random.default_rng()
rng
Out[1]:
Generator(PCG64) at 0x7FBF1DB88E58

こうして作成したジェネレータオブジェクト rng に対して、Generator.geometricを呼び出すことによって、幾何分布から乱数配列を取得することができます。

その際、第一引数には1試行当たりの成功確率、第二引数には配列のsizeを渡します。

以下のサンプルコードでは、成功確率35%のベルヌーイ試行を10000回行った時の、それぞれの試行で初めて成功するまでの回数が出力されています。

In [2]:
rng.geometric(0.35, 10000)
Out[2]:
array([1, 1, 1, ..., 6, 2, 2])

最初の試行で成功した数を使って計算をすると、成功確率35%であることが確認できます。

In [3]:
z = rng.geometric(0.35, 10000)
(z ==1).sum()/10000
Out[3]:
0.3491

3. まとめ

以上の通り、Generator.geometricは、幾何分布から乱数配列を生成するジェネレータメソッドです。

これまでは、numpy.random.geometric関数が使われていましたが、今後はこのジェネレータメソッドを使うようにしましょう。こちらの方が、処理が遥かに高速なので、大量のデータを扱う科学技術計算に適しています。

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる