当前位置: 首页 > 面试题库 >

以随机顺序对数组排序

屠坚壁
2023-03-14
问题内容

我试图了解如何以随机顺序对数组进行排序。因此,我发现以下代码:

var as = ["max","jack","sam"];

var s = as.sort(func);



function func(a, b) {

  return 0.5 - Math.random();

}



console.log(s);

我的主要问题是为什么他们使用 0.5而不是另一个数字 ?以及 它是如何工作的,
请尝试简化它。我是javascript的新手,我正在努力解决这些问题


问题答案:

你用过

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()将返回在范围内的float值[0,1]
这样您的func返回值将在的范围内[-0.5,0.5]

这意味着将设置排序顺序increasedecrease。这是随机的。所以你的结果将是随机的

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


 类似资料:
  • 问题内容: 我有一个HashMap,每次我获得迭代器时,我都希望以不同的随机顺序迭代它们的键值对。从概念上讲,我想在调用迭代器之前对地图进行“混洗”(或者,如果需要,可以对迭代器进行“混洗”)。 我有两种选择: 1)使用LinkedHashMap的方法,并在内部保留条目列表,将其随机洗净,并在调用迭代器时返回该视图。 2)使用map.entrySet(),构造一个ArrayList并在其上使用sh

  • 我在编写简单的程序对随机数组进行shellsort时遇到了一个问题。程序不对它排序,只是打印1,1,1,1,1或0,0,0,0,0,0,即使shellsort算法是从rosettacode所以它应该是正确的。

  • 问题内容: 为了从Sql查询中以随机顺序获取结果,我通常按新的Guid进行排序。我之前已经使用Entity- Framework完成了此操作,但是由于某种原因,它现在无法正常工作。 例如(使用Adventureworks2008r2数据库),我在LinqPad中运行以下查询: 这将生成以下SQL: 那么我的orderby查询发生了什么? 我通过以下查询进一步迈出了这一步,发现它只被调用了一次。 这

  • 本文向大家介绍javascript数组随机排序实例分析,包括了javascript数组随机排序实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript数组随机排序实现方法。分享给大家供大家参考。具体如下: 我们就测试0-9的随机排序,先生成数据 正常排序后的数组元素:0,1,2,3,4,5,6,7,8,9 定义一个随机函数,随机返回正数或者负数,sort函数将根据随机返

  • 随机排列指定数组的值,返回一个新的数组。 使用 Fisher-Yates 算法 对数组元素进行重新排序。 const shuffle = ([...arr]) => { let m = arr.length; while (m) { const i = Math.floor(Math.random() * m--); [arr[m], arr[i]] = [arr[i],

  • 问题内容: myArray = [Step 6, Step 12, Step 5, Step 14, Step 4, Step 11, Step 16, Step 9, Step 3, Step 13, Step 8, Step 2, Step 10, Step 7, Step 1, Step 15] 如何以这种方式在上面对这个数组排序? 我很快使用了此功能,但它是按这种方式排序的 问题答案: 另

  • 问题内容: 我想以随机顺序在CardLayout中显示卡片或屏幕。我需要有关如何完成此操作的指导。我应该使用什么策略? 我尝试使用下面的代码,但它的顺序固定。我希望能够选择我喜欢的任何顺序。 编辑! 抱歉,按我的意思随机排列并不是说改组。但是,很高兴知道。我希望程序的用户能够输入一些输入。根据输入的值,显示特定的屏幕/卡。 问题答案: 这是直接跳转到卡片的简单方法。 显然,这将需要对其余代码进行一

  • 问题内容: 我有两个问题和答案 我曾经洗牌每个数组。如何对每个数组进行混洗,以便在混洗后保持相同的顺序? 问题答案: 您可以改组包含索引的新数组。然后从第一个索引获取两个数组中的元素。 当然,如其他答案所建议的那样,创建一个包含和将是一种更加面向对象的方法。这样,与当前方法相比,您仅需维护一个或。