Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用数组从1到100生成10个随机数_C++_Arrays - Fatal编程技术网

C++ 使用数组从1到100生成10个随机数

C++ 使用数组从1到100生成10个随机数,c++,arrays,C++,Arrays,到目前为止,我得到的是: using namespace std; int main() { int i = 0; srand(time(0)); int array[10], i; for(int i=0; i<100; i++) : [i] = rand()%100+1; } return 0; } 使用名称空间std; int main(){ int i=0; srand(时间(0)); int数组[10],i

到目前为止,我得到的是:

using namespace std;

int main() {

    int i = 0;
    srand(time(0));
    int array[10], i;
    for(int i=0; i<100; i++) : 
        [i] = rand()%100+1; 
    }
    return 0;
}
使用名称空间std;
int main(){
int i=0;
srand(时间(0));
int数组[10],i;

对于(int i=0;i),如果你想要从一个集合中随机数,而不重复,那么考虑把这个集合改组,然后挑选第一个n个元素。然后你不必跟踪哪些项目已经被看到了。

首先,你不应该在两个地方声明i。这会产生一个可能的错误来源。

其次,应该将for循环后面的“:”替换为“{”。这将是第二个可能的错误源

第三,“[i]=rand()%100+1;”有问题。我建议您自己解决这个问题

另外,下次请拿出你的全部代码,因为这对于像我这样的程序员来说是很重要的,这样调试就更容易了。(我知道代码可能不完整,因为没有使用“int array[10]”。

有一些“更奇特”的方法可以做到这一点,但要尽可能简单:

int main()
{
    srand(time(0));
    int array[10];
    bool used[101] = {false};
    for (int i = 0; i < 10; ++i)
    {
        do
        {
             array[i] = rand() % 100 + 1;
        } while (used[array[i]);
        used[array[i]] = true;
    }
}
intmain()
{
srand(时间(0));
int数组[10];
bool使用[101]={false};
对于(int i=0;i<10;++i)
{
做
{
数组[i]=rand()%100+1;
}while(使用[array[i]);
使用的[array[i]]=true;
}
}

注意,你的
for
循环测试是
i如果你必须从一系列没有重复的数字中生成随机数,那么你的情况基本上与洗牌和发牌非常相似。这是因为你可以生成一组有限的值,一旦你使用了一个,你就不能再使用它了n、 解决此问题的一种方法是将所有可能的值放入一个数组中,然后洗牌该数组,您可以通过更改访问的索引从数组中“弹出”元素(就像从一副牌中“弹出”一张牌)并且生成的值将以随机顺序出现,而不会发生任何重复。如果对数组进行洗牌的额外开销很好,那么这种方法在概念上是最容易获得正确结果的方法之一。(如果您只需要非常少量的元素,并且您有一个非常大的数组,那么与其他选项相比,对整个数组执行随机洗牌通常会比较昂贵)

关于在现代C++中这样做有一组非常好的库函数(统计上优于<代码> RAND())/代码>,这样就不用处理所有通常涉及随机数生成的讨厌的事情。
#include <random>
#include <algorithm>
#include <iterator>
#include <iostream>

int main()
{
    std::vector<int> v;
    for(int i=0; i<100; i++){
         v.push_back(i);
    }

    std::random_device rd;
    std::mt19937 generator(rd());

    std::shuffle(v.begin(), v.end(), generator);

    std::copy(v.begin(), v.begin()+10, std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\n";
}
#包括
#包括


如果您需要在不修改数组的情况下生成值,请参阅一种方法。

您的代码是否编译?@NipunTalukdar您真的应该去搜索web(所有答案都在web上!)如何修复
for(int i=0;iNote:初始化
v
的循环可以被
std::itoa
替换。