如果我有一串待处理数据,但是我想要一次随机抽取3-5个,并且要求每次取出的数据随机
洗牌算法(Shuffle Algorithm)的目的是将一个有序的数组打乱,使得每个元素出现在每个位置的概率都是相等的。最著名的洗牌算法是Fisher-Yates洗牌算法,也称为Knuth洗牌算法。
一、Fisher-Yates 洗牌算法
Fisher-Yates洗牌算法的基本思想是遍历数组元素,并且在当前位置与一个随机选取的未被洗牌的位置(包括当前位置)的元素进行交换。这个过程从数组的最后一个元素开始,向前进行到第二个元素。
二、算法步骤
- 将当前元素的索引设置为数组的最后一个元素的索引。
- 在当前索引和数组第一个元素之间选择一个随机索引。
- 交换当前索引和随机选取的索引处的元素。
- 将当前索引减一(向前移动一位)。
- 重复步骤2-4,直到当前索引到达数组的开始。
三、 代码实现
// 随机选取3-5个关键词
getRandomSubarray<T