부동 범위 사이에 임의의 숫자를 얻는 방법?


414

randrange(start, stop)정수 인수 만 사용합니다. 그렇다면 두 부동 소수점 값 사이에 임의의 숫자를 어떻게 얻습니까?


2
당신이 numpy를 원한다면 np.random.uniform(start, stop)또는 np.random.uniform(start, stop, samples)여러 샘플을 원한다면. 그렇지 않으면 아래 답변이 가장 좋습니다.
sachinruk

답변:


650

random.uniform (a, b) 사용하십시오 .

>>> random.uniform(1.5, 1.9)
1.8733202628557872

4
이것은 이론적으로 1.5와 1.9를 생산할 수 있습니까? 아니면 1.50 ~ 1과 1.89 ~ 만 생산할까요?
Musixauce3000

14
@ Musixauce3000 짧은 답변 : 예. 더 긴 대답 : 설명서를 보면 Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a출력 N은 input a과 같을 수 있습니다 b. 이 경우 1.51.9.
Dan

.uniform함수 를 사용하지 않고 .random또는 대신 또는 을 사용하여이를 수행하는 다른 방법이 randrange있습니까?
DerryckDX 2016 년

1
@DerryckDX 1.5 + random.random() * (1.9 - 1.5)는 사양에 따르면 정확하게 1.9(이론적으로조차도) 결코 반환하지는 않지만 그렇게해야합니다 .
요나탄 N

Musixauce3000 @ 보인다 uniform(a, b)로서 구현 a + (b-a) * random()리턴 라운딩에 따른 범위 [A, B) 또는 [A, B]에서 난수를 github.com/python/cpython/blob/...
파벨

74

random.uniform(a, b)당신이 찾고있는 것 같습니다. 문서에서 :

a <= b의 경우 a <= N <= b이고 b <a의 경우 b <= N <= a가되도록 임의의 부동 소수점 숫자 N을 반환합니다.

여기를 참조 하십시오 .


47

오른쪽에 N 자리의 임의의 부동 소수점을 생성하려면 다음과 같이하십시오.

round(random.uniform(1,2), N)

두 번째 인수는 소수점 이하 자릿수입니다.


왜 이것이 더 많은 투표를하지 않았는지, 다른 사람들에게는 반올림 메커니즘이 없었습니다.
TheTechRobo36414519

2

가장 일반적으로 다음을 사용합니다.

import random
random.uniform(a, b) # range [a, b) or [a, b] depending on floating-point rounding

파이썬은 필요한 경우 다른 배포판을 제공 합니다.

numpy이미 가져온 경우 해당 항목을 사용할 수 있습니다.

import numpy as np
np.random.uniform(a, b) # range [a, b)

다른 분포를 필요로하는 경우 다시, numpy파이썬 같은 분포뿐만 아니라 제공하는 많은 추가 것들 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.