请教excel高手关于excel随机函数的问题
一共有245个币,分给70个人,用excel随机生成满足上述要求的,分别分到1个币,2个币,一直到10个币的人数及币值。我在a列单元格中分别输入币值数1,2,……10,b...
一共有245个币,分给70个人,用excel随机生成满足上述要求的,分别分到1个币,2个币,一直到10个币的人数及币值。我在a列单元格中分别输入币值数1,2,……10,b列随机产生人数,满足之和为70,而c列为对应币值与人数之积,满足之和为245。不知我说明白没,请教excel高手。
其实也可以这么看,这相当于求一个十元一次方程,但至少前九个未知数得先给出,最后一个未知数才能求出啊,所以这九个未知数得随机给出,最关键的就是这第十个未知数,反求出来后不能为负值。
从1相加到10最大的和是55,现在不是求1-10的和,而是另一数组就是随机生成的数组之和为70,而所生成的数组与1-10的数组对应乘积之和为245。 展开
其实也可以这么看,这相当于求一个十元一次方程,但至少前九个未知数得先给出,最后一个未知数才能求出啊,所以这九个未知数得随机给出,最关键的就是这第十个未知数,反求出来后不能为负值。
从1相加到10最大的和是55,现在不是求1-10的和,而是另一数组就是随机生成的数组之和为70,而所生成的数组与1-10的数组对应乘积之和为245。 展开
展开全部
总思路:(按每人至少分得一个考虑)
1、在假设的70×1的单元格区域内生成184个(=254-70)单元格坐标(x_i),其中x_i=1,2,...70;i=1,2,...,184。
2、统计1-70这70个整数在x_i中出现的次数,代表每人分得的币数。实际数量需人均加1。
3、统计币数为1-10的人数。
4、验证总人数、总币数。
具体步骤:(设每人至少分得一个币)
1、选中A1:A184,在A1中输入如下公式后填充至其余单元格:
=int(70*rand()+1)或=randbetween(1,70)
2、在B1:B70生成整数序列1-70,代表人数的编号。
3、选中C1:C70,在C1中输入如下公式后填充至其余单元格:
=countif($A$1:$A$184,B1)+1
4、统计相同硬币数的人数:
(1)选中D1:D10,产生1-10的整数序列,代表可能分得的币数;
(2)选中E1:E10,在E2中输入如下公式后填充至其余单元格:
=countif($C$1:$C$70,D1)
5、执行验证:
(1)对总人数求和:在E11中输入公式:=sum(E1:E10),为10则有效;
(2)对总币数求和:在F11中输入公式:=sumproduct($D$1:$D$10,$E$1:$E$10),为254则有效。
注:可在任意空白单元格位置按Delete刷新数据,由于随机性可能使结果有偏差,多刷新几次就可以了。
1、在假设的70×1的单元格区域内生成184个(=254-70)单元格坐标(x_i),其中x_i=1,2,...70;i=1,2,...,184。
2、统计1-70这70个整数在x_i中出现的次数,代表每人分得的币数。实际数量需人均加1。
3、统计币数为1-10的人数。
4、验证总人数、总币数。
具体步骤:(设每人至少分得一个币)
1、选中A1:A184,在A1中输入如下公式后填充至其余单元格:
=int(70*rand()+1)或=randbetween(1,70)
2、在B1:B70生成整数序列1-70,代表人数的编号。
3、选中C1:C70,在C1中输入如下公式后填充至其余单元格:
=countif($A$1:$A$184,B1)+1
4、统计相同硬币数的人数:
(1)选中D1:D10,产生1-10的整数序列,代表可能分得的币数;
(2)选中E1:E10,在E2中输入如下公式后填充至其余单元格:
=countif($C$1:$C$70,D1)
5、执行验证:
(1)对总人数求和:在E11中输入公式:=sum(E1:E10),为10则有效;
(2)对总币数求和:在F11中输入公式:=sumproduct($D$1:$D$10,$E$1:$E$10),为254则有效。
注:可在任意空白单元格位置按Delete刷新数据,由于随机性可能使结果有偏差,多刷新几次就可以了。
展开全部
可以用excel的VBA来编一个程序来解决这个数学问题,首先定义一个1 到 70 的数组arr。代表这70个人。然后做一个1到245的循环。在每次循环中随机产生一个1到70的数。假如产生55,那arr(55)就加上1.然后查看这个数组中,值为1有多少个。值为2有多少个。。。值为10有多少个。值为0有多少个。这就分别代表有多少人分到了1枚钱币,2枚钱币,0枚钱币。。。。以此类推。(这里包括了0枚钱币,如果每人至少分到一枚的话略有不同。只是在循环的的时候是1到245-70之间循环。最后在结果加上1就行了。。如果每人最多分到10枚钱币,也稍有改动。就是当arr(x)=10的时候随机数又产生了x的话就令他重新产生一个随机数。。。。不知道你要求具体是什么,所以没有直接做出来。把思路给你了。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个有问题吧,从1相加到10最大值是45怎么得到70呢?,如果是求一组数字的某几个的和等于另外一个数,这个我可以给你一个vba的,就是1-19任意相加(非重复)得到70的就有5000多个,你说如此庞大怎么计算
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
...说的很明白,你这个很像是一个求未知数的问题,不是求随机数的。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询