【发布时间】:2013-08-20 15:31:30
【问题描述】:
我想对我公司使用的时间编写软件进行单元测试。为了做到这一点,我想创建一组随机数,这些随机数加起来是一个定义的值。
我希望能够控制参数:
- 生成数的最小值和最大值
- 生成数字的 n 个
- 生成数字的总和
例如,一个人在 250 天内工作了 2000 小时。 2000 小时必须在 250 天内随机分布。每天花费的时间最长为 9 小时,最少为 0.25
我通过this SO 问题找到了方法
diff(c(0, sort(runif(249)), 2000))
这会产生 1 个大数字和 249 个小数字。这就是为什么我能够为生成的数字设置最小值和最大值。但我不知道从哪里开始。
【问题讨论】:
-
runif有最小和最大参数吗?runif( 249 , 0.25 , 9 ) -
我怎么会错过那个!
-
您在超平面(固定总和)和超立方体(固定最小值和最大值)的交点处进行采样。你想在这个域中保持均匀的密度吗?
-
这里经常询问最后一项:如果您要限制随机数的总和,那么基本上您需要限制可能的值。例如,如果您想要 [0,1] 中的 100 个 RV 并且总和
-
是的,我希望域中的密度均匀。