Excel - 随机数 - 和 If 语句

Excel - 随机数 - 和 If 语句

在“A”行 1-1000 中,我使用 RAND() 生成随机数。我想选择 1-100 之间的数字。

在“B”中,我有 1000 行=RAND()*(100-1)+1

在“C”中,对于 1000 行,我使用在“A”中生成的数字,因此=A1*(100-1)+1

正如预期,B 和 C 的平均值相同。

我只想在 20% 的时间内使用这些值,因此对于 1000 行中的每一行:

对于 B,我使用 =IF(A1<0.2,B1,0)
对于 C,我使用 =IF(A1<0.2,C1,0)

如果我这样做,两列的平均值将会有很大差异。

有人能解释一下原因吗?

两种方法都使用随机数。第一种方法使用两个不同的随机数(来自“A”列和“B”列计算中使用的随机数)。

答案1

除了线性变换之外,A 列和 B 列具有相同的均匀分布,但它们是独立的。B 列的概率密度函数 (PDF)小于0.2与任何其他 A 选择的 PDF 相同。

A 列和 C 列不是独立的。事实上,它们是完全确定的。如果您选择的行小于0.2,您只选择碳数<20,8。在该选择中找到大于 20,8 的 C 值的概率已降至零。显然,分布已发生变化。

举一个更明显的例子,考虑掷两个骰子(A 和 B)及其总分(C)。我期望看到 A 列和 B 列的平均值是 3.5,C 列的平均值是 7。如果我从这个表中只选择骰子 A 落在 1 上的行,我仍然会看到 B 列的平均值是 3.5(独立),但 C 列的平均值仅为 4.5,而不是 7(依赖)。

答案2

对于来自 ColumnC 的 1/5 样本,不要C根据A相应行的值(即小于 0.2 的值)选择值,而是尝试从相邻行中A选择 1/5样本。例如使用。这应该会为您提供两列的相似平均值(尽管不正确)。C=IF(A1<0.2,C2,0)=A1(100-1)+1

然后,您应该得到一个或多或少具有代表性的 ColumnC 中的 5 分之一,而不仅仅是(大约)预先选择为底部 20% 的值的放大版本。

换句话说,您的 ColumnB '差异巨大'(但可能在预期范围内,即大约 50)平均值可能是 ColumnC 样本平均值的约五倍。根据上述基础选择 1/10,将是 ~10 倍。

如果您想要生成 1-100 范围内的大约 1000 个随机数,那么您可以应用,而不是扩大=RANDBETWEEN(1,100)

相关内容