zoukankan      html  css  js  c++  java
  • 泛型算法(十七)之随机洗牌算法

    1、random_shuffle(RandomAccessIterator first, RandomAccessIterator last):n个元素有n!个排列。该函数给出随机选择的一个排列。

        std::vector<int> c = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    
        //把序列c中的元素随机打乱顺序
        std::random_shuffle(c.begin(), c.end());
        //输出
        for (auto var : c)
        {
            std::cout << var << ",";
        }
        //打印结果:8,1,9,2,0,5,7,3,4,6,

    2、random_shuffle(RandomAccessIterator first, RandomAccessIterator last, RandomNumberGenerator& gen):使用给定的随机数发生器来生产随机选择的一个排列。

        std::vector<int> c = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    
        //使用给定的随机数发生器把序列c中的元素随机打乱顺序
        std::random_shuffle(c.begin(), c.end(), [](int i){
            return std::rand() % i;
        });
        //输出
        for (auto var : c)
        {
            std::cout << var << ",";
        }
        //打印结果:8,1,9,2,0,5,7,3,4,6,

    3、shuffle(RandomAccessIterator first, RandomAccessIterator last, URNG&& g):C11版,其中参数g为随机数发生器(uniform random number generator),如在<random>中定义的标准随机数发生器。

  • 相关阅读:
    判断二叉树是否是完全二叉树
    二叉搜索树的第k个节点
    二叉树的深度
    二叉搜索树与双向链表
    二叉搜索树的后序遍历序列
    poj 2192 (DP)
    poj 1159 (DP LCS)
    poj 1934(LCS)
    《编程之美》读书笔记 -- 1.2中国象棋问题
    poj 1050(DP)
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5145074.html
Copyright © 2011-2022 走看看