Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sorting an Array in Random Order

Tags:

I'm trying to understand how sorting an array in random order works. So, I found the following code:

var as = ["max","jack","sam"];   var s = as.sort(func);    function func(a, b) {     return 0.5 - Math.random(); }    console.log(s);

my main question is why they use 0.5 not another number? and how it really works

like image 334
Amine El were Avatar asked Dec 03 '18 10:12

Amine El were


People also ask

How can I shuffle an array?

Write the function shuffle(array) that shuffles (randomly reorders) elements of the array. Multiple runs of shuffle may lead to different orders of elements. For instance: let arr = [1, 2, 3]; shuffle(arr); // arr = [3, 2, 1] shuffle(arr); // arr = [2, 1, 3] shuffle(arr); // arr = [3, 1, 2] // ...

Can array be sorted in descending order?

Array elements can be sorted in descending order by passing in the array and Collections. reverseOrder() as parameters to Arrays.


Video Answer


1 Answers

You used

var as = ["max","jack","sam"];   var s = as.sort(func);    function func(a, b) {     return 0.5 - Math.random(); }    console.log(s); 

And here the most important thing is as.sort(func).
func(a,b) will return value in range of [-0.5,0.5].

Because this function return 0.5 - Math.random() and Math.random() will return the float value which is in range of [0,1].
So that your func will return value in range of [-0.5,0.5].

And this mean that sort order will be set increase or decrease. this is random. So your result will be random

var as = ["max","jack","sam"];   var s = as.sort(func);    function func(a, b) {     return Math.random(); }    console.log(s);

var as = ["max","jack","sam"];   var s = as.sort(func);    function func(a, b) {     return 0 - Math.random(); }    console.log(s);

var as = ["max","jack","sam"];   var s = as.sort(func);    function func(a, b) {     return 0.5 - Math.random(); }    console.log(s);
like image 81
Jin Avatar answered Sep 18 '22 15:09

Jin