模拟一起洗衣服的可能性

问题描述

我正在尝试模拟一个自发的概率问题:“假设有6户家庭住在一个公寓大楼的一个单元中。平均而言,一个家庭每周要洗两次衣服,每次洗2小时。找出任何两个家庭同时洗衣服。”

但是,我能够模拟一个家庭一周只洗一次衣服的情况(下面的R代码),并且希望能将代码扩展到每周两次洗衣服的场景,这将对您有所帮助。

我也试图找到一种理论上的解决方案,但与下面的仿真结果不符。任何帮助表示赞赏。谢谢!

dist.min <- function(x) {
    ifelse(min(dist(x)) <= 2 * 3600 - 1,T,F)
}

set.seed(12345)
N <- 100000
mat <- matrix(sample(1:(24 * 60 * 60 * 7),N * 6,replace = T),ncol = 6)
is.same <- apply(mat,1,dist.min)
mean(is.same) # 0.30602

解决方法

嗨,如果我正确地理解了问题,我会采取这种方法。

这是二项式分布,其中n = 6个家庭数,一个家庭正在洗衣服的成功率p是4/168,即4小时除以工作周数。

那么至少两个家庭同时洗衣服的理论概率是

sum(dbinom(2:6,6,4/168))

大约占0.7%

根据模拟,我们创建一个矩阵,每个系列有6列,每行有1万行 模拟次数。然后让我们用1(洗衣服)和0(不)填充矩阵 概率对应于在任何时间点洗衣服的概率。

运行此代码,我得到2个或更多家庭同时洗衣服的概率为0.7%

mat<-replicate(6,sample(0:1,size = 10000,replace=T,prob = c(164/168,4/168)))
table(rowSums(mat))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...