繁体   English   中英

在随机位置上生成固定数量的1s

[英]Generate a fixed number of 1s on random positions

在只应包含数字01vector ,是否有可能使数字1随机出现n次?

  1. vector大小5, 1必须在发生随机两次vector

    [0,1,0,1,0]

  2. vector大小8, 1必须在随机出现5次vector

    [1,1,0,0,0,1,0,1]

等等..

如何在C ++中完成?

尝试这个:

#include <iostream>
#include <vector>
#include <algorithm>
#include <random>

void print_v (const std::vector <int>& v)
{
    for (int i : v)
        std::cout << i;
    std::cout << "\n";
}

int main()
{
    std::vector <int> v;

    v.push_back (1);
    v.push_back (1);
    v.push_back (0);
    v.push_back (0);
    v.push_back (0);
    print_v (v);

    std::random_device rd;
    std::mt19937 g (rd ());    
    std::shuffle (v.begin (), v.end (), g);
    print_v (v);
}

代表输出:

11000
00011

现场演示

(我将留给您构造原始的,未改组的向量)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM