我有这个:
#include <iostream>
using namespace std;
int main()
{
int a[256];
int b;
int k;
for (int i = 0; i < 256; i ++){
b = rand()%256;
k = 0;
for (int j = 0; j< i; j ++)
{
if (a[j] == b){k = 1;}
}
if (k == 0){a[i] = b;}
if (k==1){i--;}
}
return 0;
}
这会生成一个从 0 到 255 的整数数组。每个整数在数组中只出现一次。我的问题是这段代码需要相当长的时间来执行,因为对于每个新的随机整数,我都会检查该整数是否已经在数组中。所以我必须等到从 0 到 255 的所有整数都显示为随机数。我的问题是:
有更好的方法吗?
最佳答案
正如其他人提到的,使用 std::random_shuffle:
std::vector<int> my_vec(256); //Reserve space for 256 numbers in advance.
for(int n = 0; n < 256; ++n)
{
my_vec.push_back(n);
}
std::random_shuffle(my_vec.begin(), my_vec.end());
关于c++ - 如何生成 256 个不同数字的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21948091/