#include <iostream>
#include <random>
using namespace std;
int main()
{
default_random_engine e;
for(int j=0;j<3;++j)
{
for(int i=0;i<10;++i)
cout << e() << ' ';
cout << endl;
}
uniform_int_distribution<unsigned> u(0,18);
for(int i=0;i<10;++i)
cout << u(e) << ' ';
cout << endl;
default_random_engine e2(12345);
for(int i=0;i<10;++i)
cout << u(e2) << ' ';
cout << endl << u.min() << ' ' << u.max();
cout << "\nHello world!" << endl;
return 0;
}
题目:
1)连续掷n次硬币,正反面概率相同,则一次正面朝上的概率为多少?
2)连续掷n次硬币,正面朝上的概率为2/3,则三次正面朝上的的概率为多少?
#include <iostream>
#include <random>
#include <ctime>
using namespace std;
int main()
{
cout << 32.0/81 << endl;
default_random_engine e(time(0));//初始化随机数,使得前面给出的随机数不会影响
for(int i=0;i<10;++i) //后面还未给出的随机数
cout << e() <<' ';
cout << endl;
uniform_int_distribution<> u(0,1);
for(int i=0;i<10;++i)
cout << u(e) << ' ';
cout << endl;
default_random_engine e2;
for(int i=0;i<10;++i)
cout << u(e2) << ' ';
cout << endl;
cout << "Hello world!\n\n" << endl;
int total,n;
printf("输入掷硬币的次数以及每一次要连续掷多少次:\n");
cin >> total >> n;
int ans=0,x;
double result=0;
for(int i=0;i<total;++i)
{
u.reset();
int temp=0;
for(int j=0;j<n;++j)
{
x=u(e);
if(x==1)
++temp;
}
if(temp==1)
++ans;
}
result=(ans*1.0)/total;
printf("连续掷%d次硬币,正反面概率相同,则一次正面朝上的概率为:\n",n);
cout << result << endl;
uniform_real_distribution<> f(0,1.5); //正面朝上的概率为2/3
printf("\n输入掷硬币的次数以及每一次要连续掷多少次:\n");
cin >> total >> n;
ans=0;
double d;
result=0;
for(int i=0;i<total;++i)
{
f.reset();
int temp=0;
for(int j=0;j<n;++j)
{
d=f(e);
if(d>0.5)
++temp;
}
if(temp==3)
++ans;
}
result=(ans*1.0)/total;
printf("连续掷%d次硬币,正面朝上的概率为2/3,则三次正面朝上的的概率为:\n",n);
cout << result << endl;
return 0;
}