在excel中以均匀分布随机选择一个值(从值的子集中)

在excel中以均匀分布随机选择一个值(从值的子集中),excel,random,statistics,distribution,Excel,Random,Statistics,Distribution,我有一个excel文档,其中包含以下值(仅提供和此相关的值) 对于value列,我想从值200、400、600中进行选择,并将它们随机应用于每一行。除此之外,我需要在每个ID中有一个均匀分布(因此每个ID将有200个两次、400个两次、600个两次) 目前,我一直在值列中使用excel公式=CHOOSE(RANDBETWEEN(1,3),200400600),它从三个值中随机选择,但显然没有在每个ID组中提供均匀分布(尽管在某些情况下可能是偶然的) 是否有人在Excel或Python中对此有解决

我有一个excel文档,其中包含以下值(仅提供和此相关的值)

对于value列,我想从值200、400、600中进行选择,并将它们随机应用于每一行。除此之外,我需要在每个ID中有一个均匀分布(因此每个ID将有200个两次、400个两次、600个两次)

目前,我一直在值列中使用excel公式
=CHOOSE(RANDBETWEEN(1,3),200400600)
,它从三个值中随机选择,但显然没有在每个ID组中提供均匀分布(尽管在某些情况下可能是偶然的)


是否有人在Excel或Python中对此有解决方案?

假设每个组中正好有六个值,您可以在大多数版本的Excel中使用如下设置:

=INDEX(E$2:E$7,RANK(B2,INDEX(B$2:B$19,QUOTIENT(ROW()-2,6)*6+1):INDEX(B$2:B$19,QUOTIENT(ROW()+4,6)*6)))
您需要创建一个包含随机数的辅助列B,然后使用rank根据当前块中的随机数选择列表中的一个值-基于

提示-您可能会发现使用rand()在另一列中生成随机数更容易,然后使用粘贴值将它们放入B列中,这样它们就不会不断更改


这篇文章确实考虑了如何处理两个生成的随机数相等的情况,但是这种发生的可能性非常小,所以我没有把它包含在我的答案中。

组内的分布将是均匀的。由于偏差,份额不相等。要在组内获得相等的份额但随机分配,您可以使用shuffle([200200400400600600])。这非常有效。非常感谢。
=INDEX(E$2:E$7,RANK(B2,INDEX(B$2:B$19,QUOTIENT(ROW()-2,6)*6+1):INDEX(B$2:B$19,QUOTIENT(ROW()+4,6)*6)))