Python 学習:乱数

2014-04-09 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
3、2、1、1、2、 0、0、0、1、0(39)で、換算ポイント 61pt 。
「グルコサミン」今朝方、3位にアップ。
「Firefox」も今朝方、5位にアップ。
・-・ - -・

さて、本文。

Python では、“乱数”はどうなっているのかを調べた。

Python 2.7ja1 documentation」の、
ライブラリリファレンス」の、
9. 数値と数学モジュール」の、
9.6. random - 擬似乱数を生成する
にある。

  整数用では、ある値域内の数の選択を一様にします。
  シーケンス用には、シーケンスからのランダムな要素の一様な選択、
  リストの要素の順列をランダムに置き換える関数、
  順列を入れ替えずにランダムに取り出す関数があります。

  実数用としては、一様分布、正規分布 (ガウス分布)、対数正規分布、
  負の指数分布、ガンマおよびベータ分布を計算する関数があります。
  角度分布の生成用には、von Mises 分布が利用可能です。

  ほとんど全てのモジュール関数は基礎となる関数 random() に依存します。
  この関数は半開区間 [0.0, 1.0) の値域を持つ一様な浮動小数点数を生成します。
  Python は中心となる乱数生成器として Mersenne Twister を使います。
  これは 53 ビットの浮動小数点を生成し、周期が 2**19937-1、
  本体は C で実装されていて、高速でスレッドセーフです。
  Mersenne Twister は、現存する中で、最も大規模にテストされた乱数生成器のひとつです。
  しかし、完全に決定論的であるため、この乱数生成器は
  全ての目的に合致しているわけではなく、暗号化の目的には全く向いていません。

  ・・・・・

注目点は、
  Python は中心となる乱数生成器として Mersenne Twister を使います。
ですね。


4年前(2010-06-06)、「C言語」を覚え立ての頃でしょうか、・・・
C(gcc) 入門(9)乱数
で書いている。

  ・・・・・
  数値計算シミュレーションと云えば、「乱数」が付きものですね。
  乱数と云えば、メルセンヌ・ツイスタ(Mersenne twister)法ですね。
  それも、「MT19937」でしょうか。

  日本人(松本眞と西村拓士)によって開発された、
  ある意味、最高性能の「擬似乱数生成器」と思っています。

  従来(今でも?)、Active BASIC で使っていた、MT19937 は、
  本家のC言語版を、某氏が、Active BASIC に移植したものです。

  C(gcc) 入門(5)「gsl」で「Active BASIC」から2歩(?)離れましたが、

  C(gcc) では、どうしようか?
  ・・・・・
  ・・・・・


それで、
今度は Python 用のメモとして、
以下、
コード・スニペット(code snippet)
を纏め。


import random # モジュールのインポート


random.seed( [x] )
# 基本乱数生成器を初期化します。
# x が省略されるか None の場合、現在のシステム時間が使われます;


random.randint( a, b )
# a <= N <= b であるようなランダムな整数 N を返します。
# つまり、区間 [ a, b ]


random.random()
# 値域 [ 0.0, 1.0 ) の次のランダムな浮動小数点数を返します。


random.uniform( a, b )
# a <= b であれば a <= N <= b であるようなランダムな浮動小数点数 N を返し、
# b < a であれば b <= N <= a になります。
# 端点 b が値の範囲に含まれるかどうかは、
# 等式 a + (b-a) * random() における浮動小数点の丸めに依存します。


### その他の関数
random.normalvariate( mu, sigma ) # 正規分布、mu は平均で、sigma は標準偏差
random.expovariate( lambd ) # 指数分布、lambd は平均にしたい値で 1.0 を割ったもの
random.gauss( mu, sigma ) # ガウス分布、mu は平均で、sigma は標準偏差

### さらには、
# ベータ分布、ガンマ分布、対数正規分布、パレート分布、ワイブル分布、
# triangular(low, high, mode)、 vonmisesvariate(mu, kappa)




まあ、通常は、

import random # 必須

random.seed() # 前処理

random.random() # 必要回数実行

ですか?

時には、
  random.randint( a, b )
も使うか?


更なる、Python の学習です。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140222
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク