用c++语言,0到3000,我想让他们随机的保存在数组中,不能重复,要怎么做?请高手指教,谢谢!

我自己写了一个,100以内可以,但是过了100就报错了
2024-12-16 13:35:28
推荐回答(3个)
回答1:

定义一个数组,然后全部赋值为-1,用一个0-3000的循环for(int i;i<=3000;i++)(为了把3000个数放入在数组中),用随机数产生一个位置,看数组上这个位置如果是-1,把i放入,否则重新随机一个位置,直到把这个i放入数组中。

回答2:

应该是数组下标越界了,调试运行下,比较分配的数组大小是否始终大于数组下标。

回答3:

#include
#include
#include

int main()
{
const int cnt = 3000;
std::vector src;
src.resize(cnt+1);
int dst[cnt+1];
int i = 0;
srand(time(0));
for(i=0;i<=cnt;i++)
{
src[i] = i;
}

int index = 0;
for(i=0;i<=cnt;i++)
{
index = rand()%src.size();
dst[i] = src[index];
src.erase(src.begin()+index);
}

for(i=0;i<=cnt;i++)
std::cout<
std::cout< return 0;
}