How to randomize subset of array in Javascript?

后端 未结 4 1536
死守一世寂寞
死守一世寂寞 2021-01-25 18:22

What is the best way to randomize part of the array in Javascript

For example, if I have 100 items in the array, what is the fast and efficient way of randomizing set of

相关标签:
4条回答
  • 2021-01-25 18:59

    The following shuffles the specified chunk of an array in place, as randomly as the environment's random number generator will allow:

    function shuffleSubarray(arr, start, length) {
        var i = length, temp, index;
        while (i--) {
            index = start + Math.floor(i * Math.random());
            temp = arr[index];
            arr[index] = arr[start + i];
            arr[start + i] = temp;
        }
        return arr;
    }
    
    var a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    alert( shuffleSubarray(a, 2, 5) );
    
    0 讨论(0)
  • 2021-01-25 19:01

    You can adjust the array shuffle method that is described here: http://jsfromhell.com/array/shuffle

    It is based on Fisher-Yates (Knuth) algorithm (http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).

    0 讨论(0)
  • 2021-01-25 19:01

    I would split the 1 array into 10 subsets, then perform a shuffle algorithm of your choice on those subsets, and then recombine in the correct order.

    0 讨论(0)
  • 2021-01-25 19:18

    I would just use the built in slice, concat and sort methods. Something like this.

    function shuffle(arr, start, end) {
     return arr.slice(start, end).sort(function() { return .5 - Math.random(); }).concat(arr.slice(end));
    };

    That's the basic idea, you probably want to make an algorithm to slice every 10 elements, sort and rejoin the sets.

    EDIT: Read comments below for why this solution may not be suitable for your needs.

    0 讨论(0)
提交回复
热议问题