2016-01-11 32 views
1

uniform(a,b)返回範圍[a,b)中的值。如何把這個間隔變成(a,b)?Python:生成一個範圍內的隨機浮點數,排除起點

+1

注意'制服(A,B)'可以產生上限值'B'太多,在很多情況下。 –

+0

它可以是'[a,b]'或'(a,b)'。 [「根據等式a +(ba)* random()中的浮點舍入,終點值b可能包含也可能不包含在該範圍內。」](https://docs.python.org/3 /library/random.html?highlight=random.uniform#random.uniform) – Phillip

+0

@Phillip:您引用的句子是正確的:可以包含'b'。舉一個極端的例子,試試'a = 1.0','b = 1.0 + 2 ** - 52'。你會看到'統一的(a,b)'一半的時間產生'a',一半的時間產生'b'。對於一個不太極端的例子,'uniform(1.0,1.25)'理論上可以產生'1.25'。 –

回答

2

這似乎很簡單:

def my_uniform(a, b): 
    while True: 
     result = uniform(a, b) 
     if a < result < b: 
      return result 
相關問題