所谓模拟程序就是“计算机仿真”,就是要让计算机产生随机数作为生日,来模拟实际情况,进而统计概率。
上面两位根本就是用电脑在运算嘛,根本不是模拟啊戚李。
看我的。
******************************************************
n = 50%有50个人
TestTime = 1000 %总共模拟1000次,模态仔歼拟次数越多,结论越准确
SamebirthdayTime = 0 %看模拟的1000次中,有几次帆冲是“有相同生日”的情况,初值先设为0
for loop = 1:TestTime %模拟开始
birthday = floor(rand(1,n)*365) %用计算机产生n个随机数,作为n个人的生日
birthday = sort(birthday) %将生日从小到大排序
for i=1:n-1
flag = birthday(i)-birthday(i+1) %看排序后相邻有没有相同的数
if flag == 0%如果有,就说明此次模拟出现了“有相同生日”的情况
SamebirthdayTime = SamebirthdayTime + 1
break
end
end
end
P = SamebirthdayTime/TestTime %算出最终概率
***************************************************
楼主可以运行一下,n=50的时候,模拟出来应该是97%左右,与概率论计算结果是符合的。
#include <iostream>#include <ctime>
using namespace std
int main() 竖告{
int counts[6] = { 0 }
const int times = 10000
srand(time(NULL))
for (int i = 0 i < times i++) {
counts[rand() % 6]++
}
for (int i = 0 i < 6 i++) {
cout << 悉配"掷出 " << i + 1 << " 的概率为 " << 100.0 * counts[i] / times << " %" 余陆明<< endl
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)