日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

std::shuffle-c++

發布時間:2025/7/14 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 std::shuffle-c++ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在Python中我們會經常看到shuffle的隨機排列函數,其可以將列表中的內容進行隨機排列,但在C++中卻需要自己去實現這樣功能的函數(c++0x之前)。在c++0x之后這樣的功能函數在標準庫中已有對應的提供——std::shuffle。下面就對該函數做具體的介紹: [cpp]?view plaincopy
  • template?<class?RandomAccessIterator,?class?URNG>??
  • void?shuffle?(RandomAccessIterator?first,?RandomAccessIterator?last,?URNG&&?g);??

  • 函數功能:使用隨機生成器g對元素[first, last)可行交換的容器內部元素進行隨機排列,大概原理類似如下代碼的功能 [cpp]?view plaincopy
  • template?<class?RandomAccessIterator,?class?URNG>??
  • void?shuffle?(RandomAccessIterator?first,?RandomAccessIterator?last,?URNG&&?g)??
  • {??
  • ??for?(auto?i?=?(last-first)?-?1;?i?>?0;?--i)?{??
  • ????std::uniform_int_distribution<decltype(i)>?d?(0,i);??
  • ????swap?(first[i],?first[d?(g)]);??
  • ??}??
  • }??
  • 函數必須與標準庫默認的隨機生成器一起使用,隨機生成器的頭文件是<random>。如果要使用不需要傳入隨機生成器函數可以參照random_shuffle函數。 參數: first, last 順序容器迭代器的開頭(begin)和結尾(end),在[first, end)這個區間內的數值將會被隨機排序。順序容器的迭代器必須是定義有swap函數的數據類型以及順序容器也必須支持元素可交換。 g 唯一隨機數生成器的一個實例,在頭文件<random>中定義。URNG?是?uniform random number generator的縮寫。 返回值: None 用例: [cpp]?view plaincopy
  • #include?<iostream>??
  • #include?<vector>??
  • #include?<algorithm>?//?std::move_backward??
  • #include?<random>?//?std::default_random_engine??
  • #include?<chrono>?//?std::chrono::system_clock??
  • ??
  • int?main?(int?argc,?char*?argv[])??
  • {??
  • ????std::vector<int>?v;??
  • ??
  • ????for?(int?i?=?0;?i?<?10;?++i)?{??
  • ????????v.push_back?(i);??
  • ????}??
  • ??
  • ????//?obtain?a?time-based?seed:??
  • ????unsigned?seed?=?std::chrono::system_clock::now?().time_since_epoch?().count?();??
  • ????std::shuffle?(v.begin?(),?v.end?(),?std::default_random_engine?(seed));??
  • ??
  • ????for?(auto&?it?:?v)?{??
  • ????????std::cout?<<?it?<<?"?";??
  • ????}??
  • ??
  • ????std::cout?<<?"\n";??
  • ??
  • ????return?0;??
  • }??

  • 編譯: g++ main.cpp -o shuffle -std=c++0x 執行輸出: 6 4 2 3 7 8 5 1 9 0 4 7 3 6 8 0 2 9 5 1

    轉載于:https://www.cnblogs.com/lx-hhxxttxs/p/5908213.html

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的std::shuffle-c++的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。