Med*_*ere 13 javascript arrays sorting random algorithm
我试图理解如何按随机顺序对数组进行排序.所以,我找到了以下代码:
var as = ["max","jack","sam"];
var s = as.sort(func);
function func(a, b) {
return 0.5 - Math.random();
}
console.log(s);Run Code Online (Sandbox Code Playgroud)
我的主要问题是为什么他们使用0.5而不是另一个数字?和它如何工作,请尽量做到简单我在JavaScript是新的,我用这些东西奋斗
rv7*_*rv7 10
Math.random()返回0(独占)之间的数字.我们正在使用,1因为它是平均值.
Array.sort()根据返回值对参数进行排序.因此,0.5将以相等的概率产生正值或负值.因此,它将随机排序参数.
0.5 - Math.random()是正的,则第一参数的索引将是更高的比第二的.Array.sort(),那就什么都不做.你用过
var as = ["max","jack","sam"];
var s = as.sort(func);
function func(a, b) {
return 0.5 - Math.random();
}
console.log(s);
Run Code Online (Sandbox Code Playgroud)
而这里最重要的事情是as.sort(func).
func(a,b)将返回范围内的值[-0.5,0.5].
因为这个函数返回0.5 - Math.random()而Math.random()将返回浮点值,该值在范围内[0,1].这样你的func意志就会在范围内返回[-0.5,0.5].
这意味着将设置排序顺序increase或decrease.这是随机的.所以你的结果是随机的
var as = ["max","jack","sam"];
var s = as.sort(func);
function func(a, b) {
return Math.random();
}
console.log(s);Run Code Online (Sandbox Code Playgroud)
var as = ["max","jack","sam"];
var s = as.sort(func);
function func(a, b) {
return 0 - Math.random();
}
console.log(s);Run Code Online (Sandbox Code Playgroud)
var as = ["max","jack","sam"];
var s = as.sort(func);
function func(a, b) {
return 0.5 - Math.random();
}
console.log(s);Run Code Online (Sandbox Code Playgroud)
Math.random()返回0到1之间的随机值(包含0但排除1).所以0.5作为中点.如果使用大于1或小于0的值,则它将始终为true或false.因此,使用0.5.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
让我们用例子来理解它
var as = ["max","jack","sam"];
var s = as.sort(func);
function func(a, b) {
return 0.5 - Math.random();
}
console.log(s);Run Code Online (Sandbox Code Playgroud)
这是您使用大于1的值时获得的
var as = ["max","jack","sam"];
var s = as.sort(func);
function func(a, b) {
return 1 - Math.random();
}
console.log(s);Run Code Online (Sandbox Code Playgroud)
当您使用小于0的值时会发生这种情况
var as = ["max","jack","sam"];
var s = as.sort(func);
function func(a, b) {
return -1 - Math.random();
}
console.log(s);Run Code Online (Sandbox Code Playgroud)
PS: -
尝试从上述所有条件打印输出,您将看到最后两个条件将始终从函数返回true或false.所以你不会得到随机排序.
现在谈谈从0到0.99的任何值,你可以使用任何值,但0.5将最好地满足你的目的.因为它是一个中间点,你最有可能得到最好的答案.
| 归档时间: |
|
| 查看次数: |
4440 次 |
| 最近记录: |