用matlab写出这样的函数“给出n个人(n<365)至少有两个人在同一天的概率的计算机上机模拟程序”

用matlab写出这样的函数“给出n个人(n<365)至少有两个人在同一天的概率的计算机上机模拟程序”,第1张

这哪是什么模拟程序啊。。。

所谓模拟程序就是“计算机仿真”,就是要让计算机产生随机数作为生日,来模拟实际情况,进而统计概率

上面两位根本就是用电脑在运算嘛,根本不是模拟啊戚李。

看我的。

******************************************************

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

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12536007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存