【Matlab】怎么生成23个范围为1-6的整数,且这些数的和为124急求!

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 06:02:53

【Matlab】怎么生成23个范围为1-6的整数,且这些数的和为124急求!
【Matlab】怎么生成23个范围为1-6的整数,且这些数的和为124
急求!

【Matlab】怎么生成23个范围为1-6的整数,且这些数的和为124急求!
硬干吧,
124/23 = 5.3913043478260869565217391304348,故肯定存在取值为6的.
124-5*23 = 9,故至少存在9个6;故问题转换为
怎么生成23-9=14个范围为1-6的整数,且这些数的和为124-9*6 = 70?
这个问题的复杂度为6^14 = 2^36.189475010096186540352345215269,
PC机几分钟可以算出来.

6的个数不得少于9个,问题转换为求14个大小在1-6之间数,它们之和为70;
14个数中,1的个数不得多于三个,否则加起来绝对会小于70;
这么一来只要做很少的循环就好了,运行时间不超过1秒~
我不太擅长编程,随便写了一个脑残的,结果还是可以的。
clear;clc;
a=0;
for n1=0:2
for n2=0:(14-n1)<...

全部展开

6的个数不得少于9个,问题转换为求14个大小在1-6之间数,它们之和为70;
14个数中,1的个数不得多于三个,否则加起来绝对会小于70;
这么一来只要做很少的循环就好了,运行时间不超过1秒~
我不太擅长编程,随便写了一个脑残的,结果还是可以的。
clear;clc;
a=0;
for n1=0:2
for n2=0:(14-n1)
for n3=0:(14-n1-n2)
for n4=0:(14-n1-n2-n3)
for n5=0:(14-n1-n2-n3-n4)
n6=14-n1-n2-n3-n4-n5;
if ((n1*1+n2*2+n3*3+n4*4+n5*5+n6*6)==70)
a=a+1;
M(a,:)=[n1 n2 n3 n4 n5 n6];
end
end
end
end
end
end
disp(M);
运行结果是矩阵M的值,它的每一行从第1列到第6列分别表示1-6这几个数出现的次数。
每一行再补上9个6就好了

收起

跑了20分钟 跑了129400个解   实在太花时间了,我给终止了。你可以跑完试试。

这个用C++跑应该会快很多,不知道有没有更快的解法。

a = zeros(1, 23);

a(21) = 4;

a(22) = 5;

a(23) = 5;

n = 0;

A = zeros(10000000, 23);

flag = 0;

i = 0;

while 1

     n = n+1;

    A(n,:) = 6*ones(1, 23) - a;   

    for i = 22:-1:0;

        if i == 0

            flag = 1;

            break;

        end

        if( a(i) < 5 && a(i+1) > 0 )

            j = i+1; k = 23;

            while( j < k )

                c = a(k);

                a(k) = a(j);

                a(j) = c;

                j = j+1;

                k = k-1;

            end

            break;

        end            

    end

    if flag

        break;

    end

    for j = i+1:23

        if a(j) > 0 

            a(i) = a(i)+1;

            a(j) = a(j)-1;

            break;

        end

    end

end

【Matlab】怎么生成23个范围为1-6的整数,且这些数的和为124急求! matlab上生成一组均值为1误差在0.5的10个随机数 matlab中如何在zeros[1,n]矩阵中随机生成5个1,其他元素全为0?不知道怎么处理了,求教.万分感谢 matlab怎么生成一个主对角为0,1随机的矩阵,其他元素为0 matlab如何生成一串随机数,使之均值为0.7且范围在0到1之间 怎么利用matlab生成协方差为1的单位白噪声? matlab怎么画y=5,x范围为1到100 matlab生成随机数我想做个DNA编码,就是利用A T G C 这个四个字母生成串长为n 的所有序列怎么弄. matlab怎么生成列向量 matlab怎么生成灰度图像 matlab 怎么生成特殊矩阵 matlab生成一组随机数,要求均值为0.1,误差在0.2范围内的10个随机数是我要生成这样的随机数,均值0.1,上下限0.09-0.11,我不知道范围如何限制 用matlab在一个半径为1000的圆内,随机生成1000个点,这1000个点,两两距离不得低于10,该怎么编? MATLAB中randn()生成的随机数分布范围是多少?MATLAB中只说到randn()用于生成均值为0,标准差为1的随机数,但是没有明确这些随机数的取值范围?MATLAB 帮助中的例子x = -2.9:0.1:2.9;y = randn(10000,1);hist(y,x) matlab怎么随机生成1,0,-1的矩阵 matlab生成函数对变量在一定范围内的图形关系d范围为0到8,变化值为0.5. 怎么用matlab生成100个标准正态分布的随机数并画出直方图 用matlab生成一个离散序列x(n),共200个采样点,前30个点值为1,其余为0.求程序.