使用JavaScript的随机数

时间:2012-04-02 19:33:46

标签: javascript

我有以下代码来生成两个随机数

var attackRoll = Math.floor((Math.random()*6)+1);
var defenceRoll = Math.floor((Math.random()*6)+1);

当我运行此代码时,它将按预期生成两个随机数。我唯一注意到的,我只想要确保我不会发疯...第一个变量将始终具有更高的“Roll”或“Equal我已经运行此代码输出值这么多,很多时间而不是一次,第二个值高于第一个值。

这只是我傻吗?或者我是否错误地分配了随机数?

3 个答案:

答案 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
}