📅  最后修改于: 2023-12-03 15:06:34.404000             🧑  作者: Mango
在C++和TypeScript中,需要从一个向量中随机选择不重复的元素,并将它们添加到另一个向量中。这在很多应用场景中都有着重要的作用,如序列乱序、抽奖等。
在C++中,可以使用STL库的random_shuffle
和vector
来实现。random_shuffle
用于将向量中的元素随机打乱,而vector
则用于存储元素。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> source {1, 2, 3, 4, 5};
std::vector<int> result {};
std::random_shuffle(source.begin(), source.end());
for (auto it = source.begin(); it != source.end() && result.size() < 3; ++it) {
result.push_back(*it);
}
for (auto it = result.begin(); it != result.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
上面的程序将源向量{1, 2, 3, 4, 5}
中的元素随机打乱,并将前三个不重复的元素添加到结果向量中。输出结果为4 1 3
。
在TypeScript中,可以使用Array
的slice
和splice
方法来实现。slice
方法用于复制数组中指定范围的元素,而splice
方法则用于在数组中添加或删除元素。
const source: number[] = [1, 2, 3, 4, 5];
const result: number[] = [];
source.sort(() => Math.random() - 0.5);
for (let i = 0; i < 3 && i < source.length; ++i) {
result.push(source[i]);
source.splice(i, 1);
}
console.log(result);
上面的代码将源数组[1, 2, 3, 4, 5]
中的元素随机打乱,并将前三个不重复的元素添加到结果数组中。输出结果为[2, 4, 1]
。
无论是C++还是TypeScript,都可以轻松地从一个向量中选择随机元素而不重复地添加到另一个向量中。这种方法简单易用,可用于众多应用场景,并有很大的灵活性。