【问题标题】:Randomly selecting a value (from a subset of values) at even distribution within a group in excel在excel中的组内以均匀分布随机选择一个值(从值的子集中)
【发布时间】:2021-03-08 15:28:25
【问题描述】:

我有一个包含以下值的 excel 文档(仅提供与此处相关的值)。

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

目前,我一直在值列中使用这个excel公式=CHOOSE(RANDBETWEEN(1,3),200,400,600),它从三个值中随机选择,但显然没有提供每个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 解决这个问题?

【问题讨论】:

  • 组内分布均匀。由于偏差,份额不相等。要在组内获得平等的份额但随机分配,您可以使用shuffle ([200,200,400,400,600,600])。

标签: excel random statistics distribution


【解决方案1】:

假设每个组中正好有六个值,您可以在大多数版本的 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 根据当前块中的随机数选择列表中的值之一 - 基于this useful article的方法

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多