使用c ++在每个循环中从数组中随机选择n个元素

Posted

技术标签:

【中文标题】使用c ++在每个循环中从数组中随机选择n个元素【英文标题】:radomly selecting n elements from an array on every loop with c++ 【发布时间】:2017-07-16 20:03:44 【问题描述】:

我正在尝试编写一个 c++ 代码,该代码从用户获取输入并存储在一个数组中,然后以 4 个一组随机打印回元素。

下面是我的代码。

 #include<iostream>
    using namespace std;
    int main()
      int i; int arr[5];
        cout << "Enter some numbers" << endl;
         for(i=0; i<5; i++)
            cin >> arr[i];
         


        for(int k=0; k<5; k++)
                cout << arr[k];
                cout << " ";
        
        cout << " " << endl; 

【问题讨论】:

1.你有什么问题? 2. 您在两个for 循环中都有未定义的行为(您正在越界访问数组) 你为什么用 C 标记你的问题? @pmg 是 c++ 而不是 c。 假设您将 for 循环更改为 k @NtirpangLouis 如果您已经知道它是 C++,而不是 C,那么请不要从现在开始将其标记为 C! 【参考方案1】:

如果您只想从包含 4 个或更多数字的池中获取四个随机数,那么一种简单的方法就是每次将所有条目打乱并返回前 4 个。

【讨论】:

如何实现随机播放? @NtirpangLouis:搜索“Fisher-Yates shuffle algorithm”。应该带来很多链接,例如Wikipedia. @NtirpangLouis 如果没有被分配禁止,use std::shuffle

以上是关于使用c ++在每个循环中从数组中随机选择n个元素的主要内容,如果未能解决你的问题,请参考以下文章

从集合中选择 N 个随机数

c语言数组内元素相加?

c语言中如何修改数组中的元素

从具有加权概率的列表中随机选择

使用 step 循环遍历数组

在非常大的数组中找到 N 个唯一随机数的最佳算法