有三十人的班级,出现生日重复的概率;
概论模拟
0-365随机产生数字,有没有碰撞,如果有碰撞,进行十万次重复
C实现:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)
int main()
{
srand((int)time(0));
float N = 1000 * 1000;
int n = 0;
for(int i=0;i<N;i++)
{
int a[365] = {0}; //对于每次实验都要生成一新的个数组
for(int j=0;j<30;j++)
{
int t = random(365);
if(a[t] == 1)
{
n++;
break;
}
else
a[t] = 1;
}
}
printf("%f",float(n/N));
}
模拟是对概率问题
生日出现三次:
生日是连续:
生日是紧挨着:
问题二:给定四张扑克牌,点数:1~10,用 + - * / 运算,结果正好是24的概论
随机产生组合序列,计算==24
6 3 4 * + 逆波兰表达式计算的实现需要使用堆栈
stl 的stack,queue容器的简单使用。
#include<iostream>
#include<stack>
#include<queue>
#include<stdlib.h>
using namespace std;
int main()
{
stack<int> s;
queue<int> q;
int array[4] = {1,2,3,4};
for(int i=0;i<4;i++)
{
s.push(array[i]);
q.push(array[i]);
}
//输出栈中的元素
cout << "栈长度为" << s.size() << endl;
for(int i=0;i<4;i++)
{
cout << s.top() << " ";
s.pop();
}
//输出队列中元素
cout << endl;
cout<<"队列长度为:"<<q.size()<<endl;
for(int i=0;i<4;i++)
{
cout<<q.front()<<" ";
q.pop();
}
cout<<endl;
/*int i;
cin>>i;*/
system("pause");
return 0;
}
用stl stack 解决逆波兰表达式的问题
没有解决,有算法思想但是解决不了??? 下次再解决