matlab中,在1—2000的整数中随机地取一个数,问取到的整数既不能被6整除,又不能被8整除的概率是多少?求程序过程

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 22:21:04
matlab中,在1—2000的整数中随机地取一个数,问取到的整数既不能被6整除,又不能被8整除的概率是多少?求程序过程

matlab中,在1—2000的整数中随机地取一个数,问取到的整数既不能被6整除,又不能被8整除的概率是多少?求程序过程
matlab中,在1—2000的整数中随机地取一个数,问取到的整数既不能被6整除,又不能被8整除的概率是多少?求程序过程

matlab中,在1—2000的整数中随机地取一个数,问取到的整数既不能被6整除,又不能被8整除的概率是多少?求程序过程
我不知道你弄这个问题是需要实验求解还是数学求解.
数学求解容易:求出所有可以整除6或整除8个个数:2000/6+2000/8-2000/(6和8的最小公倍数)=333+250-83=500 (所有取值向下取整)
从而概率为:(2000-500)/2000=0.75
如果使用MATLAB实验求解,如下程序.
m=2000; %总数
n=0; %计数器
k=100000; %matlab计算次数
for i=1:k
rou=ceil(rand*m); %随机生成一个1到m的整数
if mod(rou,6)~=0 & mod(rou,8)~=0
%不被6整除且不被8整除时取整
n=n+1;
end
end
n/k
这个程序每次运算结果不一样,因为是随机实验,可以调整K的大小开考虑试验次数,其结果基本上是在0.75左右的.

tic%计时开始
clc;clear
a=1;%所要产生数的下限
b=2000;%所要产生数的上限
n=1e5;%产生的随机数的个数
m=1e2;%测试次数
pr=zeros(1,m);%初始化概率数组
for j=1:m%测试m次
num=0;
data=a+round((b-a)*rand(n,1));%数...

全部展开

tic%计时开始
clc;clear
a=1;%所要产生数的下限
b=2000;%所要产生数的上限
n=1e5;%产生的随机数的个数
m=1e2;%测试次数
pr=zeros(1,m);%初始化概率数组
for j=1:m%测试m次
num=0;
data=a+round((b-a)*rand(n,1));%数据服从均匀分布
% data=a+round((b-a)*normrnd(0,1,n,1));%数据服从N~(0,1)正态分布
for i=1:n
if mod(data(i),6)==0||mod(data(i),8)==0;%被6或8带除
num=num+1;%被6或8带除的个数
end
end
pr(j)=(n-num)/n;%保存每次测试所得的概率
end
pr_avg=mean(pr);%求m次概率的平均值
disp(['取到的整数既不能被6整除,又不能被8整除的概率是',num2str(pr_avg)])
toc%计时结束
%%%%%%%%%%%程序结束%%%%%%%%%%%%%%
通过测试不同的分布,可以知道数据的分布对求概率的影响不大。

收起

a=1;
b=2000;
n=0;
for i=1:10000 %循环一万次,也可以是其它数
c=round(a+rand(1,1)*(b-a)); %产生一个1-2000之间的随机整数
if(rem(c,6)~=0); %判断不能被6整除
if(r...

全部展开

a=1;
b=2000;
n=0;
for i=1:10000 %循环一万次,也可以是其它数
c=round(a+rand(1,1)*(b-a)); %产生一个1-2000之间的随机整数
if(rem(c,6)~=0); %判断不能被6整除
if(rem(c,8)~=0); %判断不能被8整除
n=n+1; %既不能被6整除,又不能被8整除时,n加上1
end
end
end
d=n/i;

收起

clear all;clc;
num=1:2000;
ii=0;
for n=num(1):num(end)
a=mod(n,6); %%判断n/6的余数
b=mod(n,8);
if a~=0&&b~=0 %%如果a和b都不是0,则记录这个数字
ii=ii+1;
nout(ii)=n; %%记录下...

全部展开

clear all;clc;
num=1:2000;
ii=0;
for n=num(1):num(end)
a=mod(n,6); %%判断n/6的余数
b=mod(n,8);
if a~=0&&b~=0 %%如果a和b都不是0,则记录这个数字
ii=ii+1;
nout(ii)=n; %%记录下不能被6和8整除的数
else
continue;
end
end
protable=length(nout)/length(num);
结果是:
2000以内既不能被6又不能被8整除的概率7.500000e-001,也就是0.75

收起