javascript - 以随机顺序对数组进行排序

标签 javascript arrays algorithm sorting random

我想了解如何以随机顺序对数组进行排序。于是,我找到了下面的代码:

var as = ["max","jack","sam"];  
var s = as.sort(func);  

function func(a, b) {  
  return 0.5 - Math.random();
}  

console.log(s);

我的主要问题是为什么他们使用0.5 而不是另一个数字? 以及它是如何运作的

最佳答案

你用过

var as = ["max","jack","sam"];  
var s = as.sort(func);  

function func(a, b) {  
  return 0.5 - Math.random();
}  

console.log(s);

这里最重要的事情as.sort(func)
func(a,b) 将返回 [-0.5,0.5] 范围内的值。

因为此函数返回 0.5 - Math.random()Math.random() 将返回 [0 范围内的浮点值, 1].
这样您的 func 将返回 [-0.5,0.5] 范围内的值。

这意味着排序顺序将设置为增加减少。 这是随机的。 所以你的结果将是随机的

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);

关于javascript - 以随机顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53591691/

相关文章:

javascript - 函数中的递归调用如何工作?

java - 当类型未知时如何迭代 Iterable 对象?

javascript - Angularjs Controller 不工作,抛出错误(新手)

javascript - 如何启用CSS光标:pointer (the hand symbol) in mobile/tablet browser (touch screen)

Javascript 正则表达式替换并添加找到的所有元素到数组

java - ' *' as parameter changes to ".classpath, .project, .settings, bin, src,"

arrays - 查找大于指定值的整数组合的算法

javascript - 可以在 Typescript 中输入递归可变参数函数吗?

javascript - 仅使用文本偏移量在字符串中插入标签

c - C语言数组上界检查