为什么是匹配变量太大?

1视图(30天)
Kiran赛
Kiran赛 2023年5月2日
评论道: Kiran赛2023年5月4日
我在玩一个代码,生成一个模拟器的生日悖论。这是一段代码:
准备好= false;
~准备好了
%的用户输入和定义变量
birthday_repeats =输入(“选择生日重复的数量从10 - 500:“);
如果birthday_repeats > 500 | | birthday_repeats < 10 | | isempty (birthday_repeats) | |轮(birthday_repeats) ~ = birthday_repeats | | isnan (birthday_repeats)
disp (“错误”)
继续
结束
sample_size =输入(“选择样本大小从2 - 365:“);
如果sample_size > 365 | | sample_size < 2 | | isempty (sample_size) | |轮(sample_size) ~ = sample_size | | isnan (sample_size)
disp (“错误”)
继续
结束
匹配= 0 (1、sample_size);
N = 1000;
天=兰迪(1365);
%模拟运行
k = 1: birthday_repeats%所需数量的试验
匹配= 0;
j = 1:天
如果测试(天)
匹配(sample_size) =匹配(sample_size) + 1;
结束
结束
match_tally =匹配(sample_size) / N;
结束
我不知道为什么每次迭代后循环变量的匹配(sample_size)太大,这是“测试”功能:
函数=测试(数据)
= false;
n =长度(数据);
k = 1: n
我= k + 1: n
如果数据(k) = =数据(我)
= true;
打破
结束
结束
结束
结束

接受的答案

鸡向量
鸡向量 2023年5月2日
编辑:鸡向量 2023年5月2日
因为你初始化变量 匹配 两次
你第一次把它作为一个矢量,然后为每个循环迭代设置一个标量。
匹配= 0 (1、sample_size);
N = 1000;
天=兰迪(1365);
k = 1: birthday_repeats
匹配= 0;% - - - - - - - - - - - - - - - - - - - - - -删除这条线- - - - - - - - - - - - - - - - - - - - - %
j = 1:天
如果测试(天)
匹配(sample_size) =匹配(sample_size) + 1;
结束
结束
match_tally =匹配(sample_size) / N;
结束
5个评论
Kiran赛
Kiran赛 2023年5月4日
是的,我只是不理解让我循环工作以及公式找到匹配的概率。非常感谢G。

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2023年5月2日
天=兰迪(1365);
这并不要求1和365之间的一个随机数。,请求365 x 365随机数范围1到1。
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2023年5月2日
是的,你可以看到从汇总输出
天= 1 x365
它生成一个1 x 365数组。
请注意,许多元素 将会重复。如果你需要有一个随机排列的数字,使用 randperm

登录置评。

s manbetx 845


释放

R2023a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!