javascript - 随机移动的图像被屏幕的左上角吸引

标签 javascript graphics random dhtml entropy

我正在尝试制作在屏幕上随机移动的图像。

图像在屏幕上随机定位,然后每 10 毫秒从 -15 像素移动到 15 像素。

但几秒钟后,图像会集中在屏幕的左上角,而不是分散在整个屏幕上(或者至少集中在屏幕的另一个 Angular 落)...

你可以在这里看到我的代码:http://secretlabs.alwaysdata.net/bug.html

window.onload = function() {
    var imgUrl = 'http://image.jeuxvideo.com/smileys_img/18.gif';
    var imgs = [];
    var imgPos = [];

    for(var i = 0; i < 50; i++) {
        // Create 50 images.

        imgs.push(new Image());
        imgs[i].src = imgUrl;
        imgs[i].style.position = 'absolute';

        // Position them randomly on the screen.

        imgPos[i] = [Math.floor(Math.random() * window.innerWidth),
                    Math.floor(Math.random() * window.innerHeight)];

        imgs[i].style.left = imgPos[i][0] + 'px';
        imgs[i].style.top = imgPos[i][1] + 'px';
        document.body.appendChild(imgs[i]);
    }

    window.setInterval(function() {
        for(var i = 0; i < 50; i++) {
            // Move randomly each image from -15px to 15px, vertically and horizontally.

            imgPos[i][0] += Math.floor(Math.random() * 30) - 15;
            imgPos[i][1] += Math.floor(Math.random() * 30) - 15;

            // Avoid images to go out of the screen.

            if(imgPos[i][0] < 0)
                imgPos[i][0] = 0;
            if(imgPos[i][1] < 0)
                imgPos[i][1] = 0;
            if(imgPos[i][0] > window.innerWidth - 16)
                imgPos[i][0] = window.innerWidth - 16;
            if(imgPos[i][1] > window.innerHeight - 16)
                imgPos[i][1] = window.innerHeight - 16;

            imgs[i].style.left = imgPos[i][0] + 'px';
            imgs[i].style.top = imgPos[i][1] + 'px';
        }
    }, 10);
};

最佳答案

如果您想要更少的偏见,请不要舍入到负值。

替换

Math.floor(Math.random() * 30) - 15

Math.round(Math.random() * 30  - 15)

我刚刚用这段代码做了一个小测试:

var N = 1000000;
for (var j=0; j<20; j++) {
  var sum = 0;
  for (var i=N; i-->0;) sum += Math.round(Math.random() * 30  - 15);
  console.log(sum/N);
}

It seems OK (打开控制台)

关于javascript - 随机移动的图像被屏幕的左上角吸引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14939129/

相关文章:

javascript - 与 load() 函数同步代码

.net - 如何在灰色位图图像上绘制彩色形状?

java - java.util.Random.nextInt 的实现

bash 。生成随机 mac 地址(单播)

javascript - 使用 jQuery 搜索元素属性值

javascript - 如何在 CSS/JS 中创建 super 赛亚人效果?

javascript - 表单提交后停留在 <li> 选项卡上

r - 如何在 R 中启动新的图形窗口和/或图形页面

python - 寻找库/工具来可视化多维数据

c# - 随机数生成器 - 可变长度