Python의 무작위 모듈 분석(예제 포함)

不言
풀어 주다: 2018-11-23 16:57:36
앞으로
3142명이 탐색했습니다.
이 기사는 Python의 무작위 모듈에 대한 분석을 제공합니다(예제 포함). 이는 특정 참조 가치가 있습니다. 도움이 필요한 친구가 도움이 되기를 바랍니다.

random은 Python이 의사 난수를 생성하는 모듈입니다. 무작위 시드의 기본값은 시스템 시계입니다. 모듈의 메소드는 다음과 같이 분석됩니다.

1.random.randint(start,stop)

정수 난수를 생성하는 함수입니다. 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
로그인 후 복사

2입니다. randrange(start, stop, step)

도 임의의 정수 함수이며 선택적 매개변수

  • 매개변수가 하나만 있는 경우 기본 무작위 범위는 매개변수에 대해 0이며, 먼저 닫히고 나중에 열립니다.

    두 개의 매개변수가 있으며 최소값과 최대값을 나타내며 먼저 닫히고 열림
  • 세 개의 매개변수로 최소값, 최대값 및 단계 크기를 나타내며 먼저 닫히고 나중에 열림
  • 함수 알고리즘 시간 복잡도 : 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() 함수는 난수 생성기의 상태를 기록하는 데 사용되며 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):

들어오는 컬렉션을 섞습니다. 문자열 및 목록과 같은 변경 가능한 시퀀스에만 사용할 수 있습니다. 튜플과 같은 변경 불가능한 시퀀스에 대해서는 오류가 보고됩니다.

핵심 소스 코드:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!