首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从数组中选择随机值,然后再随机选择,不包括刚刚选择的值?

从数组中选择随机值,然后再随机选择,不包括刚刚选择的值的方法有多种。以下是一种可能的解决方案:

首先,生成一个随机数来选择数组中的一个值。可以使用随机数生成函数,比如Math.random(),生成一个0到数组长度减1的随机整数。假设数组名为arr。

接下来,将选中的值从数组中移除,可以使用数组的splice()方法来实现。splice()方法可以接受两个参数,第一个参数是要移除的元素的起始位置(即刚刚选择的随机值的索引),第二个参数是要移除的元素个数(在本例中是1)。

然后,再次生成一个随机数,这次要保证不包括刚刚选择的值。可以使用同样的方法生成一个0到数组长度减2的随机整数。

最后,根据第二个随机数选择数组中的值,即arr[随机数]。

下面是一个示例代码,使用JavaScript语言实现上述思路:

代码语言:txt
复制
function getRandomValue(arr) {
  // 生成第一个随机数
  var randomIndex = Math.floor(Math.random() * arr.length);

  // 从数组中移除选中的值
  var removedValue = arr.splice(randomIndex, 1)[0];

  // 生成第二个随机数
  var newIndex = Math.floor(Math.random() * (arr.length));

  // 返回根据第二个随机数选择的值
  return arr[newIndex];
}

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var randomValue = getRandomValue(array);
console.log(randomValue);

请注意,以上示例代码仅为一种实现方法,实际使用时需要根据具体情况进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

本篇博客中的代码实现依然采用Swift3.0来实现。在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找、折半查找、插值查找、Fibonacci查找,还包括数结构的二叉排序树以及平衡二叉树的构建与查找,然后还聊了哈希表的构建与查找。接下来的几篇博客中我们就集中的聊一下常见的集中排序方式,并并给出相应的时间复杂度。本篇博客我们将会详细的介绍冒泡排序、插入排序、希尔排序以及选择排序,下篇博客将继续介绍堆排序、归并排序以及快速排序的相关内容。当然上述内容的代码实现我们依然采用Swift面向

07

快速选择算法Golang实现

类似求TopK问题中最常用的算法中,从时间复杂度最高到中等再到最优分别有不同的做法。在之前的学习中只学到了使用堆来优化TopK问题,但是这样的时间复杂度只能做到O(Nlogk)的大小,其中k是堆的大小。有一种更好的办法是基于快速排序的思想去优化的算法,叫做快速选择算法,它的时间复杂度能够做到O(N)的时间复杂度。这里的思路是:每次通过随机取得一个分区键,假设题目要求数组按照从大到小排序,那么通过将分区键移动到头部start,然后从头部的下一个元素开始遍历数组,遇到比分区键大的元素就交换到分区键后的已排序的下标的下一个位置,该指针假设就叫做index。最后遍历结束后将index的值与start的值交换,此时分区键就被移动到了index指针所指的位置,那么index左边的元素都是比分区键要大的,此时再通过对比index - start 与k的大小关系就可以判断下一次递归要从哪个区间开始,从而减少遍历的次数。

05
领券