gpt4 book ai didi

c++ - 我正在尝试获取数字的随机顺序 1 :16 using srand and rand. 代码按预期工作,但仅进行到第 12 次迭代。为什么?

转载 作者:行者123 更新时间:2023-11-28 02:30:39 25 4
gpt4 key购买 nike

#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <algorithm>
#include <iterator>


int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;

int ord[] = {
0,0,0,0,
0,0,0,0,
0,0,0,0
};

srand(time(NULL));

int i = 0;

do{
int r = rand() % 16 + 1;
bool exista =( find(begin(ord), end(ord), r) != end(ord));
if (!exista){
ord[i] = r;
cout << ord[i] << endl;
i++;
cin.get();
}

} while (find(begin(ord), end(ord), 0) != end(ord));
return 0;
}

在 12 个数字之后,程序退出,我不明白为什么,它应该在 16 次迭代之后。

最佳答案

原因是 ord 中只有 12 个零当它们耗尽时(在你的例子中,循环从 1 到 16 的唯一值填充)停止(因为没有更多的零可以找到。

更改 ord 的声明到

int ord[] = {
0,0,0,0,
0,0,0,0,
0,0,0,0,
0,0,0,0
};

int ord[16] = {0};

顺便说一句,如果您只想随机打乱这些数字,我建议您使用 random_shuffle 来自 <algorithm> .

关于c++ - 我正在尝试获取数字的随机顺序 1 :16 using srand and rand. 代码按预期工作,但仅进行到第 12 次迭代。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com