Javascript: Как получить первое случайное число, чтобы всегда быть выше, чем второе случайное число - PullRequest
2 голосов
/ 29 марта 2012
        $(function() {  
            var number = document.getElementById("breuken");        

            var i=0;

                for (i=1;i<=10;i++){
                    var fRandom = Math.floor(Math.random()*10);
                    var sRandom = Math.floor(Math.random()*10);

                    var calc = fRandom - sRandom;

                    number.innerHTML += "" + fRandom + " - " + sRandom + " = " + calc + "<br />";
                }       

            number.innerHTML;
        });

По сути, теперь он показывает 2 случайных числа до 10. Он вычитает второе число из первого числа.

Мне бы хотелось, чтобы первое число всегда было выше второго, поэтому я не получу никаких ответов, таких как «-3».

Ответы [ 6 ]

2 голосов
/ 29 марта 2012

просто используйте Math.abs()?

var calc = Math.abs(fRandom - sRandom);

Если заказы важны, вы также можете сделать

                var sRandom = Math.floor(Math.random()*10);

                // lower bound of sRandom, upper bound of (10 - sRandom)
                var fRandom = Math.floor(sRandom + Math.random()*(10-sRandom)); 
1 голос
/ 29 марта 2012

Самое простое решение - взять абсолютное значение:

var calc = Math.abs(fRandom - sRandom);

Но так как вы также перечисляете первое и второе числа, вы, вероятно, захотите отсортировать значения и восстановить их, используя значения min и max:

var bigRandom = Math.max(fRandom, sRandom);
var lilRandom = Math.min(fRandom, sRandom);

var calc = bigRandom - lilRandom;

number.innerHTML += "" + bigRandom + " - " + lilRandom + " = " + calc + "<br />";
0 голосов
/ 29 марта 2012

Добавить еще строку перед вычитанием:

if(fRandom < sRandom)
     fRandom = (sRandom - fRandom ) + Math.floor((Math.random() *10));
0 голосов
/ 29 марта 2012

Если вам нужны такие случайные числа, используйте </p> <pre><code>var fRandom = Math.floor(Math.random()*10); var sRandom = Math.floor(Math.random()*fRandom);

0 голосов
/ 29 марта 2012

Вы можете сгенерировать второе число в диапазоне [0; fRandom]:

var fRandom = Math.floor(Math.random()*10);
var sRandom = Math.floor(Math.random()*fRandom);

или просто поменять местами значения:

var fRandom = Math.floor(Math.random()*10);
var sRandom = Math.floor(Math.random()*10);
if(sRandom<fRandom) {
    var temp = sRandom;
    sRandom = fRandom;
    fRandom = temp;
}
0 голосов
/ 29 марта 2012

Или

var fRandom = Math.floor(5 + Math.random()*5);
var sRandom = Math.floor(Math.random()*5);

или просто позвоните Math.abs(), чтобы получить результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...