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
도 임의의 정수 함수이며 선택적 매개변수
매개변수가 하나만 있는 경우 기본 무작위 범위는 매개변수에 대해 0이며, 먼저 닫히고 나중에 열립니다.
두 개의 매개변수가 있으며 최소값과 최대값을 나타내며 먼저 닫히고 열림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 953.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.97419909561617115.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 106, random.getstate() 및 random.setstate(state): getstate() 함수는 난수 생성기의 상태를 기록하는 데 사용되며 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 27.random.shuffle(seq,random=None):들어오는 컬렉션을 섞습니다. 문자열 및 목록과 같은 변경 가능한 시퀀스에만 사용할 수 있습니다. 튜플과 같은 변경 불가능한 시퀀스에 대해서는 오류가 보고됩니다. 핵심 소스 코드:
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 요소는 원래 시퀀스를 변경하지 않고 집합에서 무작위로 선택되어 새로운 시퀀스를 형성합니다. 최악의 시간 복잡도: O(n*n)예:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!