int func(vector<int> list1, vector<double> list2)
{
if (list1.size() == 1)return list1[0];
//float pro = rand();
double pro = 0.2;
vector<double> sum(list2.size()+1, 0.);
double sm = 0;
for (int i = 1; i <= (int)list2.size(); i++)
{
sm += list2[i-1];
sum[i] = sm;
}
//A = [1, 2, 3, 4];
0, 0,1, 0,3, 0,6, 1
int left = 0;
int right = list2.size();
int mid;
while (left < right)
{
mid = left + (right - left) / 2;
if (sum[mid] <= pro && sum[mid + 1] >= pro){
break;
}
else if (sum[mid]>pro){
right = mid;
}
else if (sum[mid]<pro){
left = mid;
}
}
return list1[mid];
}
//0,1, 0,3, 0,6, 1
int main() {
//A = [1, 2, 3, 4]; p = [0.1, 0.2, 0.3, 0.4]
//vector<int> list1, vector<float> list2
vector<int> list1 = { 1, 2, 3, 4 };
vector<double> list2 = { 0.1, 0.2, 0.3, 0.4 };
int res = func(list1, list2);
cout << res << endl;
system("pause");
}
蔚来2面概率
最新推荐文章于 2024-09-27 17:57:19 发布