阿里2017年-图形图像算法工程师-在线编程题目

这题是我今年写的在线编程题目,说一下我的思路:先通过正态分布随机函数求出X,Y点的集合,后将X,Y排列组合,得出不同坐标代入曲线方程,得出概率。

大家有不同思路,欢迎一起讨论。今年是研一,估计没什么进阿里的希望了,跟大家一起分享我的思路,欢迎探讨。

上代码::

#include <iostream>
#include <vector>
#include <numeric>
#include <limits>
#include <random>
#include <iomanip>
#include <math.h>

using namespace std;

/**使用正太分布函数生成400个随机正太分布数,使得(X,Y)存在160000种组合情况,后求出符合要求的点。**/
double leartCurve(double mu1, double sigma1, double mu2, double sigma2)
{
	int k = 0;
	//default_random_engine generator;//如果用这个默认的引擎,每次生成的随机序列是相同的。
	random_device rd;
	mt19937 gen(rd());

	//normal(m1,s1)中m1为均值,s1为方差
	//生成正太分布的X,Y坐标。
	normal_distribution<double> normal(mu1, sigma1);
	normal_distribution<double> normal1(mu2, sigma2);
	double A[100] = { 0 };
	double B[100] = { 0 };
	int i = 0;

	for (int n = 0; n<10; n++)
	{
		for (int j = 0; j<10; j++)
//生成正太分布坐标,放在数组中
		{
			A[i] = ( normal(gen));
			B[i] = ( normal1(gen));
			i++;
		}
	}
	for (int i = 0; i < 100; i++)
	{
		for (int j = 0; j < 100; j++)
		{
//将不同坐标代入该曲线方程,得出是否在曲线内
			double R = ((((A[i] * A[i]) + (B[j] * B[j]) - 1)*((A[i] * A[i]) + (B[j] * B[j]) - 1)) - (A[i] * A[i] * B[j] * B[j]));
			if (R <= 0)
				k++;
		}
	}
	double result = k / 10000.0;

	return result;
}
//主函数 得出结果
int main() {
	double res;

	double _mu1;
	cin >> _mu1;
	cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

	double _sigma1;
	cin >> _sigma1;
	cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

	double _mu2;
	cin >> _mu2;
	cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

	double _sigma2;
	cin >> _sigma2;
	cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');


	res = leartCurve(_mu1, _sigma1, _mu2, _sigma2);
	cout << fixed << setprecision(1) << res << endl;

	return 0;

}


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值