random は Python が疑似乱数を生成するモジュールで、ランダム シードのデフォルトはシステム クロックです。モジュール内のメソッドは以下で分析されます:
これは整数乱数を生成する関数です. パラメーター start は最小値を表し、パラメータ stop は最大値を表し、両端の値を取得できます;
関数アルゴリズムの時間計算量は次のとおりです: O(1)
コア ソース コード:
return self.randrange(a,b+1) #调用randrange函数来处理
例:
import random for i in range(20): print(random.randint(0,10),end=' ')
結果:
1 1 7 5 10 1 4 1 0 8 7 7 2 10 6 8 6 0 3 1
もオプションのランダムな整数関数です。パラメータ
Only パラメータが 1 つある場合、デフォルトのランダム範囲は 0 からこのパラメータまでで、最初に閉じて後で開きます。パラメータが 2 つあり、最小値と最大値を表し、最初に閉じて後で開きます
パラメータが 3 つある場合、最小値、最大値、ステップ サイズを表し、最初に閉じます後で開きます
関数アルゴリズムの時間計算量: O(1)
return istart+istep*self._randbelow(n) #调用randbelow函数处理
インスタンス:
import random for i in range(10): print(random.randrange(10),end=' ') #产生0到10(不包括10)的随机数 print("") for i in range(10): print(random.randrange(5,10),end=' ') #产生5到10(不包括10)的随机数 print("") for i in range(10): print(random.randrange(5,100,5),end=' ') #产生5到100(不包括100)范围内的5倍整数的随机数
Result:
1 1 2 4 4 3 4 6 1 4 6 6 5 7 8 9 6 6 6 5 30 50 20 40 75 85 25 65 80 95
3.random.choice(seq)
ランダム選択関数、seq は空ではないセットで、セット内の要素を出力用にランダムに選択します。要素の制限はありません。
i=self._randbelow(len(seq)) #由randbelow函数得到随机地下标 return seq[i]
関数アルゴリズムの時間責任: O(1)
例:
import random list3=["mark","帅",18,[183,138]] for j in range(10): print(random.choice(list3),end=' ')
コード:
mark 帅 [183, 138] 18 mark 18 mark 帅 帅 [183, 138]
4.random.random()
この関数は、パラメータなしで、0.0 から 1.0 までの任意の浮動小数点数を形成します。左側が閉じ、右側が開きます。
import random for j in range(5): print(random.random(),end=' ')
実行結果:
0.357486615834809 0.5928029747238529 0.37053940107869987 0.3802224543848519 0.9741990956161711
5.random.send(n=None)
乱数生成関数を初期化できます。 n はランダム シードを表します。n=None の場合、ランダム シードはシステム時間です。n がその他のデータ (int、str など) の場合、指定されたデータがランダム シードとして使用されます。乱数シーケンスは、次の時点で生成されます。今回は固定です。
import random random.seed("mark") for j in range(20):#无论启动多少次程序,输出的序列不变 print(random.randint(0,10),end=' ')
結果:
4 1 10 5 6 2 8 5 5 10 7 2 9 6 2 6 0 5 10 10
6.random.getstate() および random.setstate(state):
getstate() 関数は次のとおりです。 used 乱数ジェネレーターの状態を記録するには、setstate(state) 関数を使用してジェネレーターを最後に記録された状態に復元します。
import random tuple1=random.getstate()#记录生成器的状态 for i in range(20): print(random.randint(0,10),end=' ') print() random.setstate(tuple1)#传入参数回复之间的状态 for i in range(20): print(random.randint(0,10),end=' ')#两次输出的结果一致
結果:
5 7 9 9 10 10 2 3 7 1 1 6 1 7 1 1 7 4 2 2 5 7 9 9 10 10 2 3 7 1 1 6 1 7 1 1 7 4 2 2
7.random.shuffle(seq,random=None):
受信したコレクション シーケンス操作をシャッフルします。これは、文字列やリストなどの変更可能なシーケンスに対してのみ使用できます。タプルなどの不変のシーケンスに対してはエラーが報告されます。random は、random=random など、アウトオブオーダーの演算方法を選択するために使用されます。
for i in reversed(range(1,len(x))): j=randbelow(i+1) x[i],x[j]=x[k],x[i]
関数アルゴリズムの時間計算量: O(n)
例:
import random lists=['mark','帅哥',18,[183,138]] print(lists) random.shuffle(lists,random=None) print(lists)
結果:
['mark', '帅哥', 18, [183, 138]] ['帅哥', 18, 'mark', [183, 138]]
8.random.sample(population,k):
population パラメータは、リスト、タプル、セット、文字列などのシーケンスであり、セットから k 個の要素がランダムに選択されて、新しいシーケンス。元のシーケンスは変更されません。
例:
import random lists=['mark','帅哥',18,[183,138]] lists2=random.sample(lists,3) print(lists) print(lists2)
結果:
['mark', '帅哥', 18, [183, 138]] ['mark', [183, 138], '帅哥']
9、random.uniform(a, b)
パラメータ a と b の間の浮動小数点数を生成する関数。a>b の場合、b と a の間の浮動小数点数を生成します。
return a+(b-a)*self.random()
時間計算量: 0(1)
例:
import random for i in range(5): print(random.uniform(10,1))
結果:
2.8826090956524606 1.5211191352548408 3.2397454278562794 4.147879756524251 6.532545391009419
以上がPython でのランダム モジュールの分析 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。