数组里面随机取三条不重复的数据
时间: 2024-02-11 08:07:37 浏览: 33
好的,可以使用 Fisher-Yates 洗牌算法来实现。具体步骤如下:
1. 首先,遍历数组,从中随机选择一个下标 i。
2. 将数组中下标为 i 的元素和下标为 n-1 的元素互换位置,其中 n 为数组长度。这样做可以保证已经选中的元素不会再次被选中。
3. 然后,从前 n-1 个元素中随机选择一个下标 j,将下标为 j 的元素和下标为 n-2 的元素互换位置。
4. 重复以上步骤,直到选取了三个元素或者数组遍历完毕。
下面是示例代码实现:
```python
import random
def get_random_items(arr):
n = len(arr)
for i in range(n-1, n-4, -1):
j = random.randint(0, i)
arr[i], arr[j] = arr[j], arr[i]
return arr[n-3:n]
# 示例用法:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = get_random_items(arr)
print(result)
```
注意,如果数组长度小于 3,则无法选取三个不重复的元素。此时可以直接返回原数组,或者根据实际情况做出其他处理。
相关问题
c# 数组里随机取多个数不重复的
在 C# 中实现从数组中随机取多个数不重复可以使用洗牌算法(Fisher-Yates Shuffle Algorithm)。以下是一个简单的实现:
```csharp
public static T[] Shuffle<T>(T[] array, int count)
{
var random = new Random();
var result = new T[count];
Array.Copy(array, result, count);
for (int i = count; i < array.Length; i++)
{
var j = random.Next(i + 1);
if (j < count)
{
result[j] = array[i];
}
}
return result;
}
```
在上面的代码中,`Shuffle`方法接受两个参数:要随机取数的数组`array`和要取的数的个数`count`。该方法返回一个新的数组,包含从`array`数组中随机取的`count`个不重复的元素。
使用示例:
```csharp
var array = new[] { 1, 2, 3, 4, 5 };
var result = Shuffle(array, 3);
foreach (var item in result)
{
Console.WriteLine(item);
}
```
上面的代码中,`Shuffle`方法将从`array`数组中随机取3个不重复的元素,并将它们存储在`result`数组中。具体的实现方法是,首先将前`count`个元素复制到`result`数组中,然后从`count`到数组末尾进行遍历,对于每个元素,随机生成一个小于等于当前下标的随机数`j`,如果`j`小于`count`,则将该元素存储在`result`数组中的第`j`个位置。这样就可以保证取出的元素不重复,并且随机性较好。
随机数组里面的数不重复
好的,如果您希望生成的随机数组中的数不重复,可以对算法进行相应的修改。以下是用 JavaScript 实现生成不重复随机数组的代码:
```javascript
function generateUniqueArray(desiredSum, n) {
let arr = [];
let sumArr = 0;
while (arr.length < n) {
let x = Math.floor(Math.random() * (desiredSum - sumArr - (n - arr.length - 1)) + 1);
sumArr += x;
arr.push(x);
}
return arr;
}
```
在这个算法中,我们使用了一个 while 循环来生成随机数组。在每一轮循环中,我们随机生成一个数 x,它的范围是 [1, desiredSum - sumArr - (n - arr.length - 1)],其中 sumArr 是目前已经生成的数的和,n 是数组的长度,arr.length 是目前已经生成的数的个数。这样可以保证每个数都不重复。当数组 arr 中的元素个数达到 n 个时,算法结束。注意,最后一个数的值是 desiredSum - sumArr,因为前面生成的数的和已经达到了 desiredSum - 1。
您可以调用 generateUniqueArray 函数来生成符合要求的随机数组。其中,desiredSum 是您决定的数,n 是数组的长度。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)