এই সমস্যায়, আমাদের দুটি অ্যারে দেওয়া হয়েছে যেকোনো একটি একটি বিনিয়োগ প্লান নির্দেশ করে। আমাদের কাজ হলো বিনিয়োগে রিস্ক ইভ্যালুয়েশন করে উভয় বিনিয়োগে কোনটি আরও প্রমিশিং সেটা বের করা।
দুই বিনিয়োগ I1[][] এবং I2[][]-এর আউটকামের একটি সেট এবং সেই আউটকামের প্রোবাবিলিটি রয়েছে।
এই মানগুলো ব্যবহার করে আমাদের প্রতিটি বিনিয়োগের রিস্ক বের করে দুটোতে بہতর বিনিয়োগটি প্রিন্ট করতে হবে।
এজন্য আমরা স্ট্যাটিস্টিক্যাল ম্যাথেম্যাটিক্স ব্যবহার করব এবং কিছু মান বের করব যা আমাদের بہতর বিনিয়োগে পৌঁছাতে সাহায্য করবে।
আমরা এই মানগুলো বের করব:
- বিনিয়োগ থেকে গড় বা মিন অর্থ, বিনিয়োগ আউটকাম এবং প্রোবাবিলিটির গুণফলের যোগফল।
- আয়ের ওপর ডেভিয়েশন (Deviation)
আমরা এই মান বের করব:
স্ট্যান্ডার্ড ডেভিয়েশন / বিনিয়োগের মিন
যে বিনিয়োগের S.D. / মিন এর মান কম, সেটাই ফলাফল।
সমাধানটি ব্যাখ্যা করে প্রোগ্রাম
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
typedef pair<float, float> Data;
typedef vector<Data> 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.