2017-03-27 6 views
-2

평균 m과 표준 편차 sd를 갖는 정규 분포에서 취한 임의로 선택된 n 개의 값의 평균을 계산하는 mean_normal (n, m, sd) 함수를 작성했습니다. 나는 시퀀스를 생성하고 평균을 계산하기 위해 reduce를 사용하기 위해 map과 normalvariate를 사용하고 싶다. 그러나 어떻게해야하는지에 대한 구문은 확실하지 않다.지도 사용 및 축소?

내가 목록 같은 것을 필요로 일반적으로 알고
from random import normalvariate 

average = lambda L: sum(L)/len(L) 

mean_normal = lambda n, m, sd: average([normalvariate(m, sd) for i in range(n)]) 
print(mean_normal(10, 5, 2)) 

(지도 (람다 전 : 여기에 지금까지 가지고있는 것입니다. ... 범위 (N))하지만 난 잘 작성하지 확신 그게 전부 야

교육 목적
+1

당신이'lambda','map','reduce'를 사용하고 싶다면 특별한 이유가 있을까요? – user2357112

+0

예상치 못한 일이 무엇입니까? 실제 질문은 무엇입니까? –

+0

[온라인 자습서] (http://www.bogotobogo.com/python/python_fncs_map_filter_reduce.php)를 살펴본 후 구문에 대해 명확하지 않습니까? – Prune

답변

1

:.

>>> mean_normal2 = lambda n, m, sd: average(map(lambda _: normalvariate(m, sd), range(n))) 
>>> mean_normal2(10, 5, 2) 
4.749961072139493 

트릭은 람다의 주장을 무시하는 것입니다 그러나 itertools에서 repeatfunc 조리법 같은 것을 사용하여 더 나을 것 :

def repeatfunc(func, times=None, *args): 
    """Repeat calls to func with specified arguments. 

    Example: repeatfunc(random.random) 
    """ 
    if times is None: 
     return starmap(func, repeat(args)) 
    return starmap(func, repeat(args, times)) 

운동으로 남겨 둡니다.

+0

고마워요! 이것은 유용한 예제였다. – chrischrischris