C++ 中投資風險評估


本例題中,給了我們兩個陣列,每個陣列都代表一個投資計劃。我們的任務是執行投資風險評估,找出兩個投資中哪一個更有前景。

投資 I1[][] 和 I2[][] 包含一系列投資結果及其發生的機率。

使用這些值,我們需要找到每筆投資的風險,然後從這兩筆投資中打印出更好的投資。

為此,我們將使用統計數學並找出一些值,幫助我們得出更好的投資結論。

我們將找到這些值,

  • 投資平均數,投資結果和機率乘積的和。
  • 投資收益的偏差

我們將找出這個值,         

投資標準差/均值

S.D. / 均值較小的投資是結果。

展示我們解決方案運作方式的程式,

例項

現場演示

#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.

更新時間:2021-01-22

118 次瀏覽

啟動你的 職業

完成課程獲得認證

開始
廣告
© . All rights reserved.