Python標準ライブラリの乱数(mathパッケージ、randomパッケージ)の紹介

2739 ワード

Python演算でPythonの最も基本的な数学演算機能を見ました.さらにmathパケットは、より多くの関数を補完します.もちろん、より高度な数学機能が必要な場合は、配列とマトリクス演算だけでなく、豊富な数学と物理方程式をサポートする標準ライブラリ以外のnumpyとscipyプロジェクトの選択も考慮できます.
さらにrandomパケットは乱数を生成するために使用することができる.乱数は数学的用途だけでなく,アルゴリズムの効率を向上させ,プログラムの安全性を向上させるためにアルゴリズムに埋め込まれることが多い.
mathパッケージ
mathパケットは主に数学関連の演算を処理する.mathパケットは2つの定数を定義します.
 
  
math.e   # e
math.pi  # pi

また、mathパッケージには様々な演算関数があります(次の関数の機能は数学のマニュアルを参照できます).
 
  
math.ceil(x)       # x , x=1.2, 2
math.floor(x)      # x , x=1.2, 1
math.pow(x,y)      # , x y
math.log(x)        # , e。 base , 。 math.log(100,base=10)
math.sqrt(x)       #

三角関数:math.sin(x), math.cos(x), math.tan(x), math.asin(x), math.acos(x), math.atan(x)
これらの関数は、パラメータとして1つのラジアン単位のxを受信する.
角度と弧の交換:math.degrees(x), math.radians(x)
双曲線関数:math.sinh(x), math.cosh(x), math.tanh(x), math.asinh(x), math.acosh(x), math.atanh(x)
特殊関数:math.erf(x), math.gamma(x)
randomパッケージ
擬似乱数(psudo-random number)の原理を理解している場合は、次のように使用できます.
 
  
random.seed(x)

乱数ジェネレータのシードseedを変更します.その原理を知らない場合は、特にseedを設定する必要はありません.Pythonはseedを選択します.
1)ランダム選択と並べ替え
random.choice(seq)#シーケンスの要素からランダムに1つの要素を選択します.例えばrandom.choice(range(10))は、0から9までの整数をランダムに選択します.random.sample(seq,k)#シーケンスからランダムにk個の要素randomを選択する.shuffle(seq)#シーケンスのすべての要素をランダムにソート
2)実数をランダムに生成
次に生成される実数は均一分布(uniform distribution)に合致し、ある範囲内の各数字が現れる確率が等しいことを意味する.
 
  
random.random()          # , [0,1) 。
random.uniform(a,b)      # , [a,b] 。

次に生成される実数は、他の分布に合致します(統計の本を参照して、これらの分布を理解することができます).
 
  
random.gauss(mu,sigma)    # ,mu,sigma 。
random.expovariate(lambd) # ,lambd 。

また、対数分布、正規分布、Pareto分布、Weibull分布もあります.次のリンクを参照してください.
http://docs.python.org/library/random.html
もし私たちがダンスの試合に参加する人たちがいるとしたら、公平のために、私たちはランダムに彼らの出場順序を並べなければなりません.次にrandomパッケージを使用して実装します.
 
  
import random
all_people = ['Tom', 'Vivian', 'Paul', 'Liya', 'Manu', 'Daniel', 'Shawn']
random.shuffle(all_people)
for i,name in enumerate(all_people):
    print(i,':'+name)

練習する
次の2つの宝くじ番号ジェネレータを設計します.
1.1から22までの5個の整数をランダムに抽出する(この5個の数字は重複しない)
2.ランダムに8桁の数字を生成し、各数字は1~6のいずれかの整数であってもよい.
まとめ
math.floor(), math.sqrt(), math.sin(), math.degrees()
random.random(), random.choice(), random.shuffle()