Excel按固定比例随机分配数据?

现有需求为将1,2,3,4,5,6,7,8,9,10,11,12按10%,10%,10%,6.66%,6.66%,6.66%,6.66%,6.66%,6.7%,10%,10%,10%的比例随机分配到8万条数据中应该怎么弄?

如果你对这些10%、6.66%要求不是很严格,随机数会不断刷新变化也可接受的话,下面的公式会得到比较满意的结果,比如结果在B1:B80000中:

B1=CHOOSE(LOOKUP(RANDBETWEEN(1,10),{1,4,8},{1,2,3}),RANDBETWEEN(1,3),RANDBETWEEN(4,9),RANDBETWEEN(10,12))

下拉到B8000。下图是模拟结果。如果需要完全吻合,且得到的结果固定下来,公式要复杂些。请再追问。

公式思路,前3个数字和后3个数字各占30%,中间6个数字点40%。先在8万个单元格中生成8万个1~10的随机数,按Excel的随机数原理(开始回答时,前面有一段稍微说明Excel随机数原理的,但百度就是不让提交,删除后才提交成功),10个数字基本上各占8千个。用lookup来区分,随机数小于4,就按choose中的第1个随机数公式,4~7,就按第2个随机数公式,8~10,就按第3个。从而达到按指定的比例得到随机数。

追问

可以了 非常感谢  能用截图说一下随机原理吗?

追答

不要用截图,原理就是Excel中的随机数是按在指定区间平均分布的。前面的回答中,公式思路已说明了公式原理。公式就是在1~10这个区间内,区间1~3(占30%——3/10),生成随机数1,2,3(各占1/3——30%的1/3,最后是10%);4~7(占40%——4/10),生成4到9(各占1/6——40%的1/6,最后是6.66%),10~12与1~3一样。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-08-25
随机分配请按如下操作
在名称框内输入B1:B80000,回车选中此区域。
输入=RANDBETWEEN(1,12)
CTRL+ENTER填充公式
每按一次键盘上的F9键,得到一组B列值。


如果A列为1到12的随机值,在B1中输入如下公式
=lookup(a1,{1,4,9,10},{10,6.66,6.7,10}%)
下拉填充

=lookup(mod(row(a1)-1,12)+1,{1,4,9,10},{10,6.66,6.7,10}%)
下拉填充追问

我需要分配的是1-12的数字 不是后面的百分比 还有这个公式完全不能随机分配只是按顺序分配 也没有按百分比分配下去

追答

B1和C1分别为公式1和2。

※※※

随机分配请按如下操作

在名称框内输入B1:B80000,回车选中此区域。

输入=RANDBETWEEN(1,12)

CTRL+ENTER填充公式

每按一次键盘上的F9键,得到一组B列值。

第2个回答  2020-08-25

这个叫指定概率分布。用RAND()函数和Index, Match就可以生成。

这个随机数生成模型,还有一个高大上的名称,叫做蒙特卡洛模型。

请参考附件公式。注明了各列的公式。

公式设置

相似回答