我有以下代码来生成两个随机数
var attackRoll = Math.floor((Math.random()*6)+1);
var defenceRoll = Math.floor((Math.random()*6)+1);
当我运行此代码时,它将按预期生成两个随机数。我唯一注意到的,我只想要确保我不会发疯...第一个变量将始终具有更高的“Roll”或“Equal我已经运行此代码输出值这么多,很多时间而不是一次,第二个值高于第一个值。
这只是我傻吗?或者我是否错误地分配了随机数?
答案 0 :(得分:2)
您的意思是attackRoll
总是大于或等于defenceRoll
吗? 绝对不是。实际上,一个高于另一个的概率是 50%相等。
您能否使用fiddle支持您的声明?你尝试过不同的浏览器吗?
答案 1 :(得分:1)
这似乎是单个用户错误 - 看看这个jsFiddle,您会发现第二个数字会多种多样:
同样的,
更高,
或更低的
而不是第一个数字。
答案 2 :(得分:0)
我不确定你想要什么。要获得一个骰子和另一个更高或相等的骰子,请使用:
var sides = 6;
var firstRoll = Math.floor((Math.random()*sides)+1);
var secondRoll = Math.floor((Math.random()*(sides+1-firstRoll)+firstRoll); // a lucky one :)
如果您想在第一个变量中滚动并获得更高的值,请使用
var sides = 6;
var firstRoll = Math.floor((Math.random()*sides)+1);
var secondRoll = Math.floor((Math.random()*sides)+1);
if (firstRoll >= secondRoll) {
higherRoll = firstRoll; // attackRoll
lesserRoll = secondRoll; // defenceRoll
} else {
higherRoll = secondRoll; // attackRoll
lesserRoll = firstRoll; // defenceRoll
}