0

모든 숫자의 가능한 조합과 그 차이를 100 %로 계산할 제품의 수 (백분율)가 있습니다.모든 가능한 조합으로 숫자의 곱을 계산하는 스크립트

그래서 예를 들어, 다음과 같은 숫자 :

(1-0.3)*(1-0.4)*(1-0.6)*(1-0.7) 
    0.3*0.4*0.6*0.7 
    0.3*(1-0.4)*(1-0.6)*(1-0.7) 
    (1-0.3)*(1-0.4)*(1-0.6)*0.7 
    (1-0.3)*0.4*(1-0.6)*(1-0.7) 
    (1-0.3)*(1-0.4)*0.6*(1-0.7) 
    0.3*(1-0.4)*(1-0.6)*0.7 
    0.3*(1-0.4)*0.6*(1-0.7) 
    (1-0.3)*(1-0.4)*0.6*0.7 
    (1-0.3)*0.4*(1-0.6)*0.7 
    (1-0.3)*0.4*0.6*(1-0.7) 
    0.3*0.4*(1-0.6)*(1-0.7) 
    (1-0.3)*0.4*0.6*0.7 
    0.3*(1-0.4)*0.6*0.7 
    0.3*0.4*(1-0.6)*0.7 
    0.3*0.4*0.6*(1-0.7) 

내가 상관 없음이를 구축 할 수 있도록하려면 : 0.3, 0.4, 0.6, 0.7

나는 다음과 같은 계산하려면 숫자 (여기에는 4 개의 숫자에 대한 예제가 있지만 수백, 수천 가지가있을 수 있음). 어떻게 부르죠? 그들에게 명령이 있습니까? 어딘가에 알려진 스크립트가 있습니까? 결국 나는 그들을 전부 합칠 필요가있을 것이다. 또한 개별적으로 사용하십시오.

답변

1

이 언어에 대해 미리 정의 된 명령이 있다고 생각하지 않지만 대부분의 언어에서는이 언어에 대한 재귀 함수를 작성할 수 있습니다. 예를 들어, 하스켈에서 당신은 사용할 수 있습니다

calculate [] = [[]] 
calculate (x:xs) = let rec = calculate xs 
         pos = map (x:) rec 
         neg = map ((1 - x):) rec 
        in pos ++ neg 

당신은 here을이을 시도하고 라인으로 예를 실행할 수 있습니다 :이 calculate 기능은 입력으로 비율의 목록을 소요

main = print (calculate [0.3, 0.4, 0.6, 0.7]) 

주와 목록의 목록을 반환하며 각 목록은 원하는 결과의 줄을 나타냅니다. 이 결과는 중간 결과 및 최종 결과를 계산하는 데 사용될 수 있습니다.

이 기능은 다음과 같이 작동합니다. 입력 내용이 빈 목록 인 경우 빈 목록이있는 목록을 반환하십시오. 입력에 요소가있는 경우 첫 번째 요소 (x)를 나머지 목록 (xs)과 분리하고 나머지 목록에 대한 결과를 계산합니다. 결과는 rec에 저장된 백분율 목록이있는 목록입니다.

하여 결과 값을 계산하여 prepend x을 ( pos 저장) rec 각 목록과 ( neg 저장) rec 각 목록 1-x 앞에 추가한다. 결과적으로 우리는 posneg의 연결 인 하나의 목록을 반환합니다.

+0

감사합니다. 시도해 볼게. –