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.