我从小就一直有这样的疑问:
这是问题:
我尝试使用 R 为这种情况编写一个模拟:
original_data = data.frame(id = 1:100, state = "start")
number_fries_selected_in_first_flip = sample(1:100, 1, replace=F)
fries_selected_in_first_flip = sample(1:100, number_fries_selected_in_first_flip, replace=F)
Run Code Online (Sandbox Code Playgroud)
这就是我陷入困境的地方 - 如果我能以某种方式“标记”所选的炸薯条,我就可以以 50% 的概率为这些炸薯条分配“烧焦/完全煮熟”状态:
status <- c("perfectly cooked","burnt")
original_data$tagged_fries_status <- sample(status, number_fries_selected_in_first_flip, replace=TRUE, prob=c(0.5, 0.5))
Run Code Online (Sandbox Code Playgroud)
如果我能完成模拟,我可以将模拟扩展到第二次翻转、第三次翻转等。在模拟结束时(例如,5 次翻转后),我可以制作一个图表,显示烧焦的炸薯条数量与煮得很完美。然后,我可以多次重复模拟(例如1000次),并找出炸焦/完全煮熟的薯条的平均数量。
有人可以告诉我如何编写这个模拟吗?
谢谢你!
使用 100 份薯条和第一面的累积时间制作数据框。由于第二侧的时间只是总时间 - 第一侧的时间,因此您可以将任何您想要的测试应用于最终的“时间状态”。
dfrm <- data.frame(id=1:100, time=0)
set.seed(123) # good practice in simulation
#start
dfrm$time <- sample(c(0,60), 100, repl=TRUE)
# next minute
dfrm$time <- sample(c(0,60), 100, repl=TRUE)
sum(dfrm$time == 60)
# 54
Run Code Online (Sandbox Code Playgroud)
随着时间 == 到零或总时间,薯条的比例将呈指数衰减,这将是“未完成”的组。由于模拟是“离散的”,因此有时剩余未完成的概率会小于任何指定的量,但保证时间会存在困难。