GSheets-生成两个值(固定数量)之间的数字(固定数量)的随机列表,这些值加起来等于声明的总和

问题描述 投票:0回答:1

问题陈述...

关于Google表格,我目前正在寻找在两个已知值之间生成随机的固定数量的数字,该数量在相加后等于已知值。

因此,假装我想要10个随机值,当它们相加时……等于100。但是每个值都必须在8到12之间,并且必须在同一列中。所以输出看起来像...

891211891111912

如何在GSheets或Excel中设置公式以输出该公式?在哪里可以输入所需数量和所需最终总数?您将是上帝送来解决这个问题,谢谢!

javascript arrays
1个回答
0
投票

想到您的问题是从瓶子中选择球而不更换。 10个数字中的每个数字都必须至少为8,因此您已经达到80个数字。但是每个数字都可以高达12,因此每个数字都有4个“插槽”可以填充,总共40个插槽。您只想填充这些插槽中的20个,这将使您达到100个。我建议您设置问题,例如从20个球中选择,而不用从10种不同颜色的4个球的罐子中替换。

对于您的特定示例,将其放入A1:A10

=FREQUENCY(INT((ROUND(MOD(SMALL(RANDBETWEEN(-1e12,SIGN(ROW(INDIRECT("1:40")))*1e12)+ROW(INDIRECT("1:40"))/100,ROW(INDIRECT("1:20"))),1),2)*100-1)/4)+1,ROW(INDIRECT("1:10")))+8

Ctrl +Shift+ Enter一起使用。

为了概括起见,我这样设置电子表格:

  • [B1:所需的随机数(例如10)]
  • B2:最小值(例如8)
  • B3:最大值(例如12)
  • [B4:所需的总数(例如100)
  • [B5=(B3-B2)*B1(可用插槽数)]
  • [B6=CEILING.MATH(LOG10((B3-B2)*B1))
  • [B7=10^B6
  • [B8=B4-B1*B2(要填充的插槽数)]
  • 并且广义公式是:

=FREQUENCY(INT((ROUND(MOD(SMALL(RANDBETWEEN(-1e12,SIGN(ROW(INDIRECT("1:"&B5)))*1e12)+ROW(INDIRECT("1:"&B5))/B7,ROW(INDIRECT("1:"&B8))),1),B6)*B7-1)/(B3-B2))+1,ROW(INDIRECT("1:"&B1)))+B2

重新计算工作表以获得一组新的数字(在Excel中为F9

© www.soinside.com 2019 - 2024. All rights reserved.