C++ 用编程写出数学概率问题
我不懂C++程序,之前在这里请教的一个问题得到了帮忙。现在还剩另个问题需要大家帮忙。题目如下:X,Y,Z为0和1之间的均匀分布的三个数,什么情况下可以实现x+y+z>1?...
我不懂C++程序,之前在这里请教的一个问题得到了帮忙。现在还剩另个问题需要大家帮忙。题目如下:
X,Y,Z为0和1之间的均匀分布的三个数,什么情况下可以实现x+y+z>1?
(原题目为:x,y,z have a uniform
distribution between 0 and 1. What's the probability that x+y+z>1?
在论坛上一个朋友帮我个出的是
“xyz坐标系统上画一个立方体,再画出x+y+z=1的面,原来它就是一个切去了立方体一个角的截面。这个切下来的角的体积是s=1/3*1/2=1/6,所以x+y+z>1的几率是5/6。”
但没有程序,所以想在这里看看谁可以帮我写出此C++程序。 展开
X,Y,Z为0和1之间的均匀分布的三个数,什么情况下可以实现x+y+z>1?
(原题目为:x,y,z have a uniform
distribution between 0 and 1. What's the probability that x+y+z>1?
在论坛上一个朋友帮我个出的是
“xyz坐标系统上画一个立方体,再画出x+y+z=1的面,原来它就是一个切去了立方体一个角的截面。这个切下来的角的体积是s=1/3*1/2=1/6,所以x+y+z>1的几率是5/6。”
但没有程序,所以想在这里看看谁可以帮我写出此C++程序。 展开
展开全部
数学结果就是5/6,干嘛还要验证。。
#include <chrono>
#include <iostream>
#include <random>
using namespace std;
int main() {
unsigned seed =
chrono::system_clock::now().time_since_epoch().count();
mt19937 g(seed);
uniform_real_distribution<double> d(0.0, 1.0);
const unsigned N = 10000;
unsigned count = 0;
for (unsigned i = 0; i != N; ++i)
if (d(g) + d(g) + d(g) > 1) ++count;
cout << count << "/" << N << endl;
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询