Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 투자 위험 평가

<시간/>

이 문제에서는 각각 투자 계획을 나타내는 두 개의 배열이 제공됩니다. 우리의 임무는 투자 위험 평가 를 수행하는 것입니다. 두 투자 중 어느 것이 더 유망한지 찾아보십시오.

투자 I1[][] 및 I2[][]에는 모두 일련의 결과와 해당 투자 결과의 확률이 있습니다.

이 값을 사용하여 각 투자의 위험을 찾은 다음 두 투자 중에서 더 나은 투자를 인쇄해야 합니다.

이를 위해 통계 수학을 사용하고 더 나은 투자로 결론을 내리는 데 도움이 되는 몇 가지 값을 찾을 것입니다.

이러한 값을 찾을 수 있습니다.

  • 투자의 평균 또는 평균 금액, 투자 결과와 확률의 곱의 합입니다.
  • 수입 금액의 편차

우리는

의 가치를 찾을 것입니다.

표준 편차/투자 평균

SD 가치가 낮은 투자 / 평균은 결과입니다.

우리 솔루션의 작동을 설명하는 프로그램,

예시

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

typedef pair<float,float> Data;
typedef vector Vector;

float totalProdProbOutcome(const Vector & v)
{
   float sum = 0;
   for ( auto i : v) {
      sum += i.first * i.second;
   }
   return sum;
}

float totalProb(const Vector & v) {
   
   float sum = 0.0;
   for ( auto i : v) {
      sum += i.second;
   }
   return sum;
}

float CalcMeanVal(const Vector & v) {
   
   return totalProdProbOutcome(v) / totalProb(v);
}

float calcStdDevi(const Vector & v)
{
   float mean = CalcMeanVal(v);
   float sum = 0;
   
   for (auto i: v)
      sum += (i.first-mean)* (i.first-mean)*i.second;
   
   return sqrt(sum/totalProb(v));
}

int main() {
   
   Vector A = { {450,0.3}, {250,0.4}, {100,0.2}, {300,0.1}};
   Vector B = { {300,0.2}, {150,0.5}, {500,0.3}};

   float meanA = CalcMeanVal(A);
   float meanB = CalcMeanVal(B);
   float SdA = calcStdDevi(A);
   float SdB = calcStdDevi(B);
   
   if( (SdA / meanA) > (SdB / meanB))
      cout<<"Investment A is Better investment.\n";
   else
      cout<<"Investment B is better investment.\n";
   return 0;
}

출력 -

Investment B is better investment.