每次重新加载我的网站时,从阵列中随机选择一组6个不同的图像

Randomly select a group of 6 different images from an array each time that I reload my site

本文关键字:一组 随机 选择 6个 图像 新加载 加载 我的 网站 阵列      更新时间:2023-09-26

我也在使用javascript和three.js进行第一步操作。我知道如何使用Math.random从阵列中随机更改图像,如下所示:

Math.floor( Math.random() * imgAr.length );

但是,如果我想在每次重新加载我的网站时随机选择一组6张图片,该怎么办?

我已经试过了,但它不起作用:

var imgAr = [
    'sources/instagram2/image1.jpg',
    'sources/instagram2/image2.jpg',
    'sources/instagram2/image3.jpg',
    'sources/instagram2/image4.jpg',
    'sources/instagram2/image5.jpg',
    'sources/instagram2/image6.jpg',
    'sources/instagram2/image7.jpg',
    'sources/instagram2/image8.jpg',
    'sources/instagram2/image9.jpg',
];
//env map
var url = Math.floor( Math.random() * imgAr.length );

如果有人能帮助我,那就太棒了。这对我来说是一个非常重要的项目,同时我也在学习。

这很管用!每次可能的120中的一个随机序列,一行中只有两个相同序列的1/14400机会。

var imgAr = [
    'sources/instagram2/image1.jpg',
    'sources/instagram2/image2.jpg',
    'sources/instagram2/image3.jpg',
    'sources/instagram2/image4.jpg',
    'sources/instagram2/image5.jpg',
    'sources/instagram2/image6.jpg',
    'sources/instagram2/image7.jpg',
    'sources/instagram2/image8.jpg',
    'sources/instagram2/image9.jpg'
];    
/*
    select takes two arguments, count: the number of urls you want, and array: the array you're gathering from
*/
function select(count, array) {
    return recurse([], count, array); // Call the recursive function
}
/*
    recurse takes an additional argument, an accumulator, that accumulates the urls selected at random
*/
function recurse(accum, count, array) {
    var array = array.slice();  // create a clone of the array, so the original is unaffected
    if (count > 0) {
        var index = Math.floor( Math.random() * array.length );
        accum.push(array.splice(index, 1)[0]); // push element to the accumulator, and remove that element from the array
        return recurse(accum, --count, array) // that way the next recursion can't select that element again
    }
    else {
        return accum; // when count reaches 0, return the accumulator
    }
}
console.log(select(6, imgAr));  // These two outputs...
console.log(select(6, imgAr));  // ...will usually be different

一个更短的变体是:

var urls = imgAr.sort(function(){return .5 - Math.random()}).slice(0,6);