在 excel 的组内随机选择一个均匀分布的值(从值的子集中)
Randomly selecting a value (from a subset of values) at even distribution within a group in excel
我有一份 excel 文档,其中包含以下值(仅提供与此处相关的值)。
对于值列,我想从值 200、400、600 中 select,并将它们随机应用于每一行。除此之外,我需要在每个 ID 内均匀分布(因此每个 ID 将有 200 两次,400 两次,600 两次)。
目前,我一直在值列中使用这个excel公式=CHOOSE(RANDBETWEEN(1,3),200,400,600)
,它从三个值中随机selects,但显然没有提供均匀分布每个 ID 组(尽管在某些情况下可能是偶然的)。
ID value
1 x
1 x
1 x
1 x
1 x
1 x
1 x
2 x
2 x
2 x
2 x
2 x
2 x
3 x
3 x
3 x
3 x
3 x
3 x
有没有人对此有解决方案,在 Excel 或 Python 中?
假设每个组中正好有六个值,您可以在 Excel 的大多数版本中使用这样的设置:
=INDEX(E:E,RANK(B2,INDEX(B:B,QUOTIENT(ROW()-2,6)*6+1):INDEX(B:B,QUOTIENT(ROW()+4,6)*6)))
您需要创建一个包含随机数的辅助列 B,然后根据当前块中的随机数对列表中的值之一使用排名 select - 基于 [=11= 的方法]
提示 - 您可能会发现使用 rand() 在另一列中生成随机数更容易,然后使用粘贴值将它们放在 B 列中,这样它们就不会不断变化。
注意文章确实考虑了如何处理两个生成的随机数相等的情况,但这种情况发生的可能性很小,所以我没有将其包含在我的回答中。
我有一份 excel 文档,其中包含以下值(仅提供与此处相关的值)。
对于值列,我想从值 200、400、600 中 select,并将它们随机应用于每一行。除此之外,我需要在每个 ID 内均匀分布(因此每个 ID 将有 200 两次,400 两次,600 两次)。
目前,我一直在值列中使用这个excel公式=CHOOSE(RANDBETWEEN(1,3),200,400,600)
,它从三个值中随机selects,但显然没有提供均匀分布每个 ID 组(尽管在某些情况下可能是偶然的)。
ID value
1 x
1 x
1 x
1 x
1 x
1 x
1 x
2 x
2 x
2 x
2 x
2 x
2 x
3 x
3 x
3 x
3 x
3 x
3 x
有没有人对此有解决方案,在 Excel 或 Python 中?
假设每个组中正好有六个值,您可以在 Excel 的大多数版本中使用这样的设置:
=INDEX(E:E,RANK(B2,INDEX(B:B,QUOTIENT(ROW()-2,6)*6+1):INDEX(B:B,QUOTIENT(ROW()+4,6)*6)))
您需要创建一个包含随机数的辅助列 B,然后根据当前块中的随机数对列表中的值之一使用排名 select - 基于 [=11= 的方法]
提示 - 您可能会发现使用 rand() 在另一列中生成随机数更容易,然后使用粘贴值将它们放在 B 列中,这样它们就不会不断变化。
注意文章确实考虑了如何处理两个生成的随机数相等的情况,但这种情况发生的可能性很小,所以我没有将其包含在我的回答中。