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
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] // ...
Array elements can be sorted in descending order by passing in the array and Collections. reverseOrder() as parameters to Arrays.
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With