c++ - 如何检查所有随机数组元素是否不同
问题描述
我正在尝试将随机整数(0 到 11 之间)传递给 Numbers[] 数组,但我必须确保它的所有 10 个元素都是不同的。我尝试先在数组中传递数字,然后检查是否有任何数字相等但它不能以这种方式工作。这是我的代码:
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
int Numbers[10];
srand( time(NULL) );
for (int i = 0; i < 10; i++ )
{
Numbers[i] = rand() % 12; // First, the integers are passed
to the array (They must be between 0 and 11)
cout << Numbers[i] << endl; // and printed to the screen
}
cout << endl << endl;
for (int u = 0; u < 10; u++)
{
if(Numbers[u] == Numbers[u - 1]) // If there are two equal
numbers
{
switch (Numbers[u]) // One of them is incremented (But that
causes problems as well because it can lead to another pair of equals)
{
case 11: // In case one of them is 11
Numbers[u]--;
break;
default:
Numbers[u]++;
break;
}
}
cout << Numbers[u] << endl;
}
return 0;
}
哈!
解决方案
只需使用std::vector
,std::iota
和std::shuffle
:
std::vector<int> v( 12 );
std::iota( v.begin(), v.end(), 0 ); // initialize with values 0..11
std::shuffle(v.begin(), v.end(), std::mt19937{std::random_device{}()}); // make em random
v.resize( 10 ); // remove extra elements
并且您不需要验证所有元素都是唯一的
推荐阅读
- python - 如何部分编辑字符串
- python - 如何使用 python 从 netcdf 数据集中查找气候月平均值?
- python - python正则表达式:如何忽略不相关的匹配?
- linux - 如何在不运行容器的情况下向容器发送命令以更改文件?
- azure - 确保 Authorization 标头的值正确形成,包括签名
- c - 结构数组有问题解决C中的问题
- google-cloud-platform - 无法通过 SSH 连接到 GCP 计算引擎
- python - 为什么 get() 方法不返回任何值?
- wordpress - 在自定义、循环外、页面上设置语言
- javascript - 如何从 Go Web 程序集“抛出”JS 错误?