【发布时间】:2017-05-28 17:03:08
【问题描述】:
我有一个回合制游戏。我对玩家设置了一个条件,即在接下来的X 固定轮数中,他/她有Y 百分比的机会触发其他事件(比如游戏结束)。
所以说x = 5 和y = 80%。我需要掷硬币 5 次(最多),并且在每次掷硬币时,修改结果百分比(在真假之间),以便 综合/平均百分比在所有 5 回合中滚动为真等于 80%。
如果我让每次掷骰的几率为 80%,那么 5 回合的平均几率不会达到 80%(它要高得多)。那么,在给定 x 次硬币翻转的情况下,如何强制 y %(大致)?
我正在使用 JavaScript。
编辑:
根据 Thiatt 的建议,我在下面实现了这段代码(假设 0.16 超过 5 圈将产生 80%)。在实践中,它接近 68%。
这似乎很接近,但当我实施时,它接近 70%:
for(var k = 0; k < 20; k++){
var totalHit = 0;
for(var i = 100; i >=0; i--){
var hit = false;
for(var j = 0; j < 5; j++){
var roll = rollDice(1, 100);
hit = roll <= 20;
if(hit){
totalHit++;
break;
}
}
}
debug('Hit ' + totalHit + '/100');
}
【问题讨论】:
-
您可以事先决定用户是否滚动正确的值?首先是 1 或 0 的 80%。然后随机掷骰子
-
p1+p2+p3+p4+p5=0.8?那么 p = 0.8/5?
-
@Thiatt 我觉得应该是
(p1+p2+p3+p4+p5)/5 = 0.8 -
@Thiatt 也许将其作为答案发布,以便 OP 可以接受?
-
5 回合中 80% 的平均概率与 5 回合中 80% 的概率不同。我想我还是错了,没想到这么多。