1. 程式人生 > >深海中的STL—mt19937

深海中的STL—mt19937

mt19937

當你第一眼看到這玩意兒的時候

肯定禁不住吐槽:納尼?這是什麼鬼?

確實,這個東西鮮為人知,但是它卻有著卓越的效能

簡介

mt19937是c++11中加入的新特性

它是一種隨機數演算法,用法與rand()函式類似

但是具有速度快,週期長的特點(它的名字便來自週期長度:2^19937-1)

說的直白一點,我們都知道rand()在windows下生成的資料範圍為0-32767

但是這個函式的隨機範圍大概在\((-maxint,+maxint)\)(maxint為int型別最大值)

例項

這個東西用法非常簡單

#include<random>
#include<ctime>
std::mt19937 rnd(time(0));
int main()
{
    printf("%lld\n",rnd());
    return 0;
}

相關推薦

深海STLmt19937

mt19937 當你第一眼看到這玩意兒的時候 肯定禁不住吐槽:納尼?這是什麼鬼? 確實,這個東西鮮為人知,但是它卻有著卓越的效能 簡介 mt19937是c++11中加入的新特性 它是一種隨機數演算法,用法與rand()函式類似 但是具有速度快,週期長的特點(它的名字便來自週期長度:2^19937-1) 說的直

深海STL—nth_element

主席樹 space ++ line str post 但是 element IT 如果讓你求區間第\(k\)大,你會怎麽做呢? 主席樹?確實是個不錯的選擇(不過像我這種垃圾還是乖乖打暴力吧) 在c++的stl庫中,提供了nth_element這樣一個函數 它的用法是nth_

C++STL介紹

沒有 添加數據 pan swap ring 不同之處 結果 allocator 新的 轉載自:https://blog.csdn.net/hhu1506010220/article/details/51971642 介紹 這篇文章的目的是為了介紹std::vector,如何

c++STL 關於map,set,vector的用法

  一、vector vector相當於是一個可以存放一個任意資料型別的一個容器,通過迭代器可以對其進行相應的操作,如下:   1 vector<CString> arrTest; 2 arrTest.push_back(L"你"); 3 arr

C++STL用法總結【轉】

(轉自:https://blog.csdn.net/piaoxuezhong/article/details/54348787?utm_source=blogxgwz8) 1.1 什麼是STL? STL(Standard Template Library),即標準模板庫,是一個具有工業強度的

c++STL的next_permutation函式基本用法

對於next_permutation函式是針對於排列組合問題的庫函式,它的排序方式是按照字典的方式排列的·: 如以下程式碼對於next_permutation函式的初步解釋: #include<cstdio> #include<cstring> #

queue (C++STL庫常用queue基本用法的實現) ([連結串列],[陣列]的實現)

Queue: 依循先進先出的規則的單調佇列. 下面是用連結串列實現的queue的幾個基本用法和一個clear()的補充用法: #include<stdio.h> /* *Date:2018/10/22 *Author:Fushicho *Name:queue連

c++STL庫 簡介 及 使用說明

作為C++標準不可缺少的一部分,STL應該是滲透在C++程式的角角落落裡的。STL不是實驗室裡的寵兒,也不是程式設計師桌上的擺設,她的激動人心並非曇花一現。本教程旨在傳播和普及STL的基礎知識,若能借此機會為STL的推廣做些力所能及的事情,到也是件讓人愉快的事情。    初識STL:解答一些疑問    1.1

C++STL用法總結

函式庫對資料型別的選擇對其可重用性起著至關重要的作用。舉例來說,一個求方根的函式,在使用浮點數作為其引數型別的情況下的可重用性肯定比使用整型作為它的引數類性要高。而C++通過模板的機制允許推遲對某些型別的選擇,直到真正想使用模板或者說對模板進行特化的時候,STL就利用了這一點提供了相當多的有用演算法。它是在一

VS2015STL原始碼解析1(霜之小刀)

VS2015中STL原始碼解析1(霜之小刀) QQ:2279557541 Email:[email protected] 1. 宣告 2 1. 宣告 本文參考了大量http:

C++STL常用容器的優點和缺點

我們常用到的STL容器有vector、list、deque、map、multimap、set和multiset,它們究竟有何區別,各自的優缺點是什麼,為了更好的揚長避短,提高程式效能,在使用之前需要我們瞭解清楚。 verctor vector類似於C語言中的陣列,它維護一段連續的記憶體空間,具有固定的

C++STL使用

1 STL的介紹 1.1概述 STL = Standard Template Library,標準模板庫,惠普實驗室開發的一系列軟體的統稱。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普實驗室工作時所開發出來的。從根本上說,

C++11 STL新增內容

引用包裝器(Reference Wrapper) 當模板函式引數為泛型型別的時候,無法推匯出是傳值還是傳引用,預設情況下會使用傳值的方式。這是我們可以用std::ref顯式指定以傳引用的方式例項化模板函式。     #include <functional>

C++STL容器vector的使用

vetctor的定義 //第一種:不傳引數 vector<int> vint; vector<char> vchar; vector<string> vstring; //第二種:傳一個引數 相當於開闢了一個數組 ve

stack (C++STL庫常用stack基本用法的實現) ([連結串列],[陣列]的實現)

Stack:依循先進後出原則的單調佇列. 下面是用連結串列實現的stack的幾個基本用法和一個clear()的補充用法: #include<stdio.h> /* *Date:2018/

[知識點]C++STL容器之map

sort函數 gin 操作 ont ack 字符 使用方法 bound 隊列 ---恢復內容開始--- 一、前言 鑒於最近不少次都要用到map我卻總是出各種bug,於是決定寫一篇總結來鞏固一下。 二、什麽是STL 全稱Standard Template Library,

C++STL用法超詳細總結

版權宣告:如需轉載,請註明原文出處!尊重智慧財產權尊重勞動成果,從你我做起! https://blog.csdn.net/u010

C++ 淺析 STL 的 list 容器

時也 sta 雙向鏈表 class span 所有 rom 實現 -s list - 擅長插入刪除的鏈表 鏈表對於數組來說就是相反的存在。 數組本身是沒有動態增長能力的(程序中也必須又一次開辟內存來實現), 而鏈表強悍的就是動態增長和刪除的能力。 但對於數組強悍的隨機

stl的transform()註意其與for_each的不同點(有無返回值)

bind2nd n) oid highlight tlist _each pre stream gin #include<iostream> using namespace std; #include"vector" #include"algorithm" #

枚舉所有排列-STL的next_permutation

n) i++ 最小 img sort urn next ges pan 枚舉排列的常見方法有兩種 一種是遞歸枚舉 另一種是STL中的next_permutation //枚舉所有排列的另一種方法就是從字典序最小排列開始,不停的調用"求下一個排列"的過程 #incl