- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图验证 expected value formula在 java 。
我做了一些非常简单的事情,我模拟了掷骰子,但我将每一面映射到一个特定的值。所以每个值都有 1/6 的概率。
预期值确定为:232.65
我运行了很长时间的骰子模拟,10000000
准确地说,但数字没有收敛到 232.65
但是是 232.74
.较小的运行也不断上升到值 233.97
.跑到 2100000000
给了 232.63
.
所以我想知道我是否做错了什么。我在这里的主要前提是,我不需要模拟 20 亿次掷骰子来最终通过公式计算出预期值。
所以我想知道我是否使用了错误的随机 API。我无法获得种子,因此我无法验证每次迭代是否会发生变化。我的代码如下:
Map<Integer, Float> map = new HashMap<>();
map.put(1, 17.2f);
map.put(2, 11f);
map.put(3, 128f);
map.put(4, 1f);
map.put(5, 1200f);
map.put(6, 38.7f);
double sum = 0;
int count = 0;
for(Map.Entry<Integer, Float> entry: map.entrySet()) {
sum += (entry.getValue() * (1/6f));
}
System.out.println("EV " + sum);
sum = 0;
for(int j = 0; j < 2100000000; j++) {
int dice = ThreadLocalRandom.current().nextInt(1, 7);
sum += map.get(dice);
++count;
}
System.out.println(sum / count);
输出:
EV 232.65000109374523
232.63201358102154
BigDecimal
但没有区别:
//double sum = 0;
BigDecimal sum = BigDecimal.valueOf(0);
int count = 0;
for(Map.Entry<Integer, Float> entry: map.entrySet()) {
sum = sum.add(BigDecimal.valueOf(entry.getValue() * (1/6f)));
}
System.out.println("EV " + sum);
sum = BigDecimal.valueOf(0);
for(int j = 0; j < 10000000; j++) {
int dice = ThreadLocalRandom.current().nextInt(1, 7);
sum = sum.add(BigDecimal.valueOf(map.get(dice)));
++count;
}
System.out.println(sum.divide(BigDecimal.valueOf(count)));
输出:
EV 232.6500010937452306
232.3528356843933100044325
最佳答案
这正是您应该期待的,请参阅 standard error of the mean在维基百科上了解更多信息。
在您的情况下,您的平均值为 232.65,标准差为 ~434.65。要了解预期的方差,您可以这样做:
lower = mu - 2 * sd / sqrt(n)
upper = mu + 2 * sd / sqrt(n)
对于
n=2100000000
这给出了大约 [232.631, 232.669],与您和 m0skit0 观察到的值一致。通常,您应该期望在大约 1/20 的时间看到超出此范围的值,即这大致是
95% CI .如果您不这样做,则 RNG 不会随机统一选择替代方案。
sqrt(n)
,即需要 100 倍的工作才能为您提供另一个十进制数的精度。
关于java - 使用 threadlocalrandom 模拟掷骰子不会收敛到预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67764668/
我有几个关于我的遗传算法和整体 GA 的问题。 我创建了一个 GA,当给定一条曲线时,它会尝试找出产生这条曲线的函数。 例子如下积分 {{-2, 4},{-1, 1},{0, 0},{1, 1},{2
我正在尝试编写一个 GA 来解决以下难题... 二进制编码(我认为)非常有效。每件作品可以是: 原始向上或翻转的方式 - 1 位 旋转 0(即无)、90、180 或 270 度 - 2 位 在位置 (
我正在编写一个小代码(顺序)来计算适度数据集的网页排名(尽管并非完全微不足道)。 算法是这样的: while ( not converged ) { // Do a bunch of thing
我正在尝试检测长时间序列中的微事件。为此,我将训练一个 LSTM 网络。 数据。每个时间样本的输入是 11 个不同的特征,经过一定程度的标准化以适合 0-1。输出将是两个类之一。 批处理。由于巨大类别
我试图通过使用 optim 函数在 R 中找到最佳 GARCH 模型的参数。但是,我的值(value)观会变得很高,这是没有意义的。我在 MATLAB 中使用 fminsearch 实现了类似的算法,
我运行了 20 倍 cv.glmnet 套索模型以获得 lambda 的“最佳”值。但是,当我尝试重现 glmnet() 的结果时,我收到一条错误消息: Warning messages: 1: fr
我在 dymola 中构建了一个模型。虽然在初始化过程中出现了一些错误,但最终还是计算成功了。 模型收敛成功后,我尝试使用“在模型中保存起始值”选项将正确的迭代变量 strat 值存储到模型中,以便模
我有一个分层 Logit,可以随着时间的推移进行观察。正在关注Carter 2010 ,我添加了时间、时间^2 和时间^3 术语。在添加时间变量之前,模型会使用 Metropolis 或 NUTS 进
再次感谢您花时间阅读这篇文章。 我知道这个问题已经被问了很多,而且我已经检查了很多关于这个问题的帖子:然而,我对使用反向传播的成功 XOR 学习的探索仍未完成。 我按照建议尝试调整学习率、动量、有/无
我是一名优秀的程序员,十分优秀!