在这个问题上,我们得到两个数组,每个数组表示一个投资计划。我们的任务是对投资风险进行评估, 并找出这两项投资中更有前途的投资。
投资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.