Javascript 生成';随机';x和y之间差值至少为100的数字

Javascript 生成';随机';x和y之间差值至少为100的数字,javascript,random,Javascript,Random,我试图在网页的横幅div中定位图像。图像需要沿x轴“随机”定位(使用CSSleft属性),因此在加载页面时,它们的显示并不总是相同的。我有以下脚本来执行此操作(它还设置了一个随机延迟,以便每次图像都以不同的时间顺序出现: for (var i = 1; i <= 5; i++) { var delay = Math.floor(Math.random() * 800) + 1; var xPos = Math.floor(Math.random() * 900) + 1;

我试图在网页的横幅div中定位图像。图像需要沿x轴“随机”定位(使用CSS
left
属性),因此在加载页面时,它们的显示并不总是相同的。我有以下脚本来执行此操作(它还设置了一个随机延迟,以便每次图像都以不同的时间顺序出现:

for (var i = 1; i <= 5; i++) {

    var delay = Math.floor(Math.random() * 800) + 1;
    var xPos = Math.floor(Math.random() * 900) + 1;

    $('#item'+i).css('left',xPos+'px').delay(delay).animate({ top: 18 }, { duration: 1000, easing: 'easeOutBounce' });

}
for(变量i=1;i 100){
近似匹配=真;
}
}
如果(近似匹配==真){
返回true;
}否则{
返回false;
}
}
随机图像放置();
基本上,它失败的地方在上面的do/while循环中。我不确定这样做的正确方法,但我基本上需要说“继续运行checkDiff函数,直到它返回true;当它返回true时,将newRandomNumber添加到数组中;如果它没有返回true,则再次运行它”

有人能帮我吗


非常感谢!

一种可能的方法是:

item0.x=//随机数

item1.x=item0.x+item0.width+100+(随机数)

item2.x=item1.x+item1.width+100+(随机数)


更新

抱歉,我没有意识到您需要对所有生成的值进行比较。这将起作用:

var isLessThanMinSeparation = function checkDiff(randomNumber, randomNumbers, minSeparation) {
    var lessThan100 = false,                // Flag for whether minSeparation has been maintained
        i = 0;                              // Incrementer
    console.log('randomNumber = ' + randomNumber);
    for (i = 0; i < randomNumbers.length; i += 1) {
        console.log('Diff between ' + randomNumbers[i] + ' and ' + randomNumber + ' = ' + Math.abs(randomNumbers[i] - randomNumber));
        lessThan100 = lessThan100 || Math.abs(randomNumbers[i] - randomNumber) <= minSeparation;
    }
    return lessThan100;
};
var randomImagePlacement = function randomImagePlacement(numberOfItems, minSeparation) {
    //numberOfItems = 5,                    // Total number of items
    //minSeparation = 100,                  // Minimum number of pixels of separation between items
    var randomNumbers = [],                 // Array 'container' to hold random numbers
        randomNumber = 0,                   // Random number
        i = 0;                              // Incrementer
    for (i = 1; i <= numberOfItems; i += 1) {
        while (isLessThanMinSeparation(randomNumber, randomNumbers, minSeparation)) {
            randomNumber = Math.floor(Math.random() * 700) + 1;
        }
        randomNumbers.push(randomNumber);
    }
    return randomNumbers;
};
console.log(randomImagePlacement(5, 100));
var isLessThanMinSeparation=函数checkDiff(随机数,随机数,minSeparation){
var lessThan100=false,//是否已维护minSeparation的标志
i=0;//递增器
log('randomNumber='+randomNumber);
对于(i=0;i
var randomizeImgPlacement = function randomizeImgPlacement() {
    var i = 0,
        delay = 0,
        xPos = 0,
        lastPos = 1000; //Default to 1000 so very first assignment has at least 100 difference
    for (i = 1; i <= 5; i += 1) {
        delay = Math.floor(Math.random() * 800) + 1;
        do { //loop assignment of xPos
            xPos = Math.floor(Math.random() * 900) + 1;
        } while (Math.abs(xPos) - Math.abs(lastPos) >= 100); // while difference is < 100
        $('#item' + i).css('left', xPos + 'px').delay(delay).animate({
            top: 18
        }, {
            duration: 1000,
            easing: 'easeOutBounce'
        });
        lastPos = xPos; //store lastPos for loop comparison
    }
};