pythonのrandomモジュール分析(一)
8620 ワード
randomはpythonが擬似乱数を生成するモジュールであり、ランダムシードはデフォルトでシステムクロックである.モジュール内のメソッドを分析します.
1.random.randint(start,stop):
これは整数乱数を生成する関数で、パラメータstartは最小値を表し、パラメータstopは最大値を表し、両端の数値はすべて取ることができる.
関数アルゴリズムの時間複雑度:O(1)コアソースコード:return self.randrange(a,b+1)#randrange関数によってカプセル化された例:
2.random.randrange(start,stop,step):ランダム整数関数でもあり、パラメータはオプションです.
パラメータが1つしかない場合、デフォルトのランダム範囲は0からそのパラメータになり、前後に開きます.2つのパラメータ、最小値と最大値、前閉後開;3つのパラメータ、最小値、最大値、ステップ長、前閉後開.
アルゴリズム時間複雑度:O(1)コアソースコード:return istart+istep*self.randbelow(n)#この関数は_randbelow関数パッケージの例:
3.choice(seq):
ランダム選択関数で、seqは空ではない集合であり、集合の中でランダムに要素出力を選択し、要素のタイプに制限はありません.コアソース:i=self.randbelow(len(seq)#由_randbelow関数によるランダムな下付きreturn seq[i]時間複雑度:O(1)例:
4.random():
この関数は0.0から1.0までの任意の浮動小数点数を形成し,左閉じ右開きでパラメータはない.例:
5.send(n=None):
乱数生成器を初期化できる関数であり、nはランダムシードを表す.n=Noneの場合、ランダムシードはシステム時間であり、nがint、strなどの他のデータである場合、提供されたデータをランダムシードとし、このとき生成されるランダム数列は固定される.
例:
6.getstate()とsetstate(state):
getstate()関数は乱数ジェネレータの状態を記録し、setstate(state)関数はジェネレータを前回記録した状態に復元するために使用されます.例:
7.shuffle(seq,random=None):
入力されたセットを乱順に操作します.文字列、リストなどの可変シーケンスに対してのみ、メタグループなどの可変シーケンスに対してエラーが報告されます.randomは、random=randomなどの乱順操作を選択するために使用されます.コアソース:
時間複雑度:O(n)例:
8.sample(population, k):
populationパラメータは、リスト、メタグループ、集合、文字列などのシーケンスです.集合からK個の要素をランダムに抽出して新しいシーケンスを形成し,元のシーケンスは変化しない.コアソース:
最悪時間複雑度:O(n*n)例:
9.uniform(a, b):
パラメータa〜b間の浮動小数点数の関数を生成し、a>bの場合、b〜a間の浮動小数点数を生成する.コアソース:return a+(b-a)*self.random()#random関数のカプセル化時間の複雑さ:O(1)例:
転載先:https://www.cnblogs.com/cwp-bg/p/7468475.html
1.random.randint(start,stop):
これは整数乱数を生成する関数で、パラメータstartは最小値を表し、パラメータstopは最大値を表し、両端の数値はすべて取ることができる.
関数アルゴリズムの時間複雑度:O(1)コアソースコード:return self.randrange(a,b+1)#randrange関数によってカプセル化された例:
1 for i in range(20):
2 print(rm.randint(0, 10), end=' ')
2.random.randrange(start,stop,step):ランダム整数関数でもあり、パラメータはオプションです.
パラメータが1つしかない場合、デフォルトのランダム範囲は0からそのパラメータになり、前後に開きます.2つのパラメータ、最小値と最大値、前閉後開;3つのパラメータ、最小値、最大値、ステップ長、前閉後開.
アルゴリズム時間複雑度:O(1)コアソースコード:return istart+istep*self.randbelow(n)#この関数は_randbelow関数パッケージの例:
1 for i in range(10):
2 print(random.randrange(10)) # 0 10( )
3 print(random.randrange(5,10)) # 5 10( )
4 print(random.randrange(5,100,5)) # 5 100( ) 5
3.choice(seq):
ランダム選択関数で、seqは空ではない集合であり、集合の中でランダムに要素出力を選択し、要素のタイプに制限はありません.コアソース:i=self.randbelow(len(seq)#由_randbelow関数によるランダムな下付きreturn seq[i]時間複雑度:O(1)例:
1 list3 = ["wo", " ", 2, 8, [2, 3]]
2 for j in range(10):
3 print(rm.choice(list3),end=" ")
4.random():
この関数は0.0から1.0までの任意の浮動小数点数を形成し,左閉じ右開きでパラメータはない.例:
1 for j in range(10):
2 print(rm.random(),end=" ")
5.send(n=None):
乱数生成器を初期化できる関数であり、nはランダムシードを表す.n=Noneの場合、ランダムシードはシステム時間であり、nがint、strなどの他のデータである場合、提供されたデータをランダムシードとし、このとき生成されるランダム数列は固定される.
例:
1 rm.seed("hdsfsf")
2 for i in range(20): # ,
3 print(rm.randint(0, 10), end=' ')
6.getstate()とsetstate(state):
getstate()関数は乱数ジェネレータの状態を記録し、setstate(state)関数はジェネレータを前回記録した状態に復元するために使用されます.例:
1 tuple1 = rm.getstate() #
2 for i in range(20):
3 print(rm.randint(0, 10), end=' ')
4 print()
5 rm.setstate(tuple1) #
6 for j in range(20):
7 print(rm.randint(0, 10), end=' ') #
7.shuffle(seq,random=None):
入力されたセットを乱順に操作します.文字列、リストなどの可変シーケンスに対してのみ、メタグループなどの可変シーケンスに対してエラーが報告されます.randomは、random=randomなどの乱順操作を選択するために使用されます.コアソース:
for i in reversed(range(1, len(x))):
j = randbelow(i+1)
x[i], x[j] = x[j], x[i]
時間複雑度:O(n)例:
1 list3 = ["wo", " ", 2, 8, [2, 3]]
2 print(list3)
3 rm.shuffle(list3, random=None)
4 print(list3)
8.sample(population, k):
populationパラメータは、リスト、メタグループ、集合、文字列などのシーケンスです.集合からK個の要素をランダムに抽出して新しいシーケンスを形成し,元のシーケンスは変化しない.コアソース:
for i in range(k):
j = randbelow(n) # randbelow
while j in selected: #
j = randbelow(n)
selected_add(j)
result[i] = population[j] #
最悪時間複雑度:O(n*n)例:
1 list3 = ["wo", " ", 2, 8, [2, 3], 2, 2, 8]
2 print(list3)
3 list1 = rm.sample(list3, 4)
4 print(list1)
9.uniform(a, b):
パラメータa〜b間の浮動小数点数の関数を生成し、a>bの場合、b〜a間の浮動小数点数を生成する.コアソース:return a+(b-a)*self.random()#random関数のカプセル化時間の複雑さ:O(1)例:
1 for i in range(10):
2 print(rm.uniform(10, 1))
転載先:https://www.cnblogs.com/cwp-bg/p/7468475.html