亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ random_shuffle()方法案例詳解

 更新時(shí)間:2021年08月23日 14:34:24   作者:愛學(xué)習(xí)的藍(lán)調(diào)  
這篇文章主要介紹了C++ random_shuffle()方法案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

假設(shè)你需要指定范圍內(nèi)的隨機(jī)數(shù),傳統(tǒng)的方法是使用ANSI C的函數(shù)random(),然后格式化結(jié)果以便結(jié)果是落在指定的范圍內(nèi)。但是,使用這個(gè)方法至少有兩個(gè)缺點(diǎn)。

首先,做格式化時(shí),結(jié)果常常是扭曲的,所以得不到正確的隨機(jī)數(shù)(如某些數(shù)的出現(xiàn)頻率要高于其它數(shù))

其次,random()只支持整型數(shù);不能用它來產(chǎn)生隨機(jī)字符,浮點(diǎn)數(shù),字符串或數(shù)據(jù)庫中的記錄。

對(duì)于以上的兩個(gè)問題,C++中提供了更好的解決方法,那就是random_shuffle()算法。不要著急,下面我就會(huì)告訴你如何用這種算法來產(chǎn)生不同類型的隨機(jī)數(shù)。

產(chǎn)生指定范圍內(nèi)的隨機(jī)元素集的最佳方法是創(chuàng)建一個(gè)順序序列(也就是向量或者內(nèi)置數(shù)組),在這個(gè)順序序列中含有指定范圍的所有值。例如,如何你需要產(chǎn)生100個(gè)0-99之間的數(shù),那么就創(chuàng)建一個(gè)向量并用100個(gè)按升序排列的數(shù)填充向量。

#include < vector >
using std::vector;
int main()
{
  vector vi;
  for (int i = 0; i < 10; i++)  
    vi.push_back(i);
/*現(xiàn)在向量包含了 100 個(gè) 0-99 之間的整數(shù)并且按升序排列*/
}  

      填充完向量之后,用random_shuffle()算法打亂元素排列順序。random_shuffle()定義在標(biāo)準(zhǔn)的頭文件中。因?yàn)樗械腟TL算法都是在名字空間std::中聲明的,所以你要注意正確地聲明數(shù)據(jù)類型。random_shuffle()有兩個(gè)參數(shù),第一個(gè)參數(shù)是指向序列首元素的迭代器,第二個(gè)參數(shù)則指向序列最后一個(gè)元素的下一個(gè)位置。下列代碼段用random_shuffle()算法打亂了先前填充到向量中的元素: 

include< algorithm >  
using std::random_shuffle; 
random_shuffle(vi.begin(), vi.end()); /* 打亂元素 */

如果你想檢查被打亂的元素,可以用如下方法看一下他們被打亂后存儲(chǔ)的次序:

for (int i = 0; i < 100; i++)  
  cout< < vi[i]; /* 顯示被打亂順序的元素 */

random_shuffle()是個(gè)完全通用的算法-適用于內(nèi)建的數(shù)據(jù)類型和用戶自定義類型。下面的例子創(chuàng)建了一個(gè)有7個(gè)字符串對(duì)象的向量,它包含一周的天數(shù)并使用random_shuffle()打亂他們的排列順序:

#include < string >  
#include < vector >  
#include < algorithm >  
#include < iostream >  
using namespace std;  
  
int main()  
  
{  
  
  vector vs;  
  
  vs.push_back(string ("Sunday"));  
  
  vs.push_back (string ("Monday"));  
  
  ...  
  
  vs.push_back (string ("Saturday"));  
  
  random_shuffle(vs.begin(), vs.end()); /* 打亂順序 */  
  
  for (int i = 0; i << 7; i++)  
  
cout< < vs[i]; /* 顯示打亂順序后的元素 */  
}

如何使用random_shuffle()處理內(nèi)置數(shù)組 在使用容器代替內(nèi)置數(shù)組時(shí),你不要有什么負(fù)擔(dān)。所有STL算法不僅適用于容器,也適用于序列。因此,你也能將random_shuffle()算法應(yīng)用于內(nèi)置數(shù)組。只是要注意random_shuffle()的第二個(gè)參數(shù)要指向數(shù)組上界的下一個(gè)元素位置:

char carr[4] = {'a', 'b', 'c', 'd'};  
/*carr+4 指向數(shù)組上界的下一個(gè)元素位置*/  
random_shuffle(carr, carr+4);     
for (int i = 0; i < 4; i++)  
  cout< < carr[i]; /* 顯示被打亂順序的元素 */

到此這篇關(guān)于C++ random_shuffle()方法案例詳解的文章就介紹到這了,更多相關(guān)C++ random_shuffle()方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++算法之在無序數(shù)組中選擇第k小個(gè)數(shù)的實(shí)現(xiàn)方法

    C++算法之在無序數(shù)組中選擇第k小個(gè)數(shù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++算法之在無序數(shù)組中選擇第k小個(gè)數(shù)的實(shí)現(xiàn)方法,涉及C++數(shù)組的遍歷、判斷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • C++ 虛函數(shù)專題

    C++ 虛函數(shù)專題

    這篇文章主要介紹了C++中虛函數(shù)的知識(shí)點(diǎn),文中配合代碼講解非常細(xì)致,供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C++中與輸入相關(guān)的istream類成員函數(shù)簡(jiǎn)介

    C++中與輸入相關(guān)的istream類成員函數(shù)簡(jiǎn)介

    這篇文章主要介紹了C++中與輸入相關(guān)的istream類成員函數(shù)簡(jiǎn)介,包括eof函數(shù)和peek函數(shù)以及putback函數(shù)還有ignore函數(shù),需要的朋友可以參考下
    2015-09-09
  • C++ 11新特性之大括號(hào)初始化詳解

    C++ 11新特性之大括號(hào)初始化詳解

    這篇文章主要介紹了C++ 11新特性之大括號(hào)初始化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 主流操作系統(tǒng)平臺(tái)的宏定義

    主流操作系統(tǒng)平臺(tái)的宏定義

    這篇文章主要介紹了主流操作系統(tǒng)平臺(tái)的宏定義,最近正在學(xué)習(xí)C++程序從Windows 平臺(tái)向Unix 平臺(tái)移植,參考了 qt 的宏定義文件,需要的朋友可以參考下
    2014-02-02
  • C語言中求和、計(jì)算平均值、方差和標(biāo)準(zhǔn)差的實(shí)例

    C語言中求和、計(jì)算平均值、方差和標(biāo)準(zhǔn)差的實(shí)例

    這篇文章主要介紹了C語言中求和、計(jì)算平均值、方差和標(biāo)準(zhǔn)差的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 利用mmap實(shí)現(xiàn)文件拷貝功能

    利用mmap實(shí)現(xiàn)文件拷貝功能

    這篇文章主要為大家詳細(xì)介紹了利用mmap實(shí)現(xiàn)文件拷貝功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語言判定一棵二叉樹是否為二叉搜索樹的方法分析

    C語言判定一棵二叉樹是否為二叉搜索樹的方法分析

    這篇文章主要介紹了C語言判定一棵二叉樹是否為二叉搜索樹的方法,結(jié)合實(shí)例形式綜合對(duì)比分析了C語言針對(duì)二叉搜索樹判定的原理、算法、效率及相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • QT實(shí)現(xiàn)簡(jiǎn)單音樂播放器

    QT實(shí)現(xiàn)簡(jiǎn)單音樂播放器

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)簡(jiǎn)單的音樂播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++堆排序算法實(shí)例詳解

    C++堆排序算法實(shí)例詳解

    這篇文章主要介紹了C++堆排序算法,簡(jiǎn)單分析了堆排序算法的原理并結(jié)合實(shí)例形式分析了C++實(shí)現(xiàn)堆排序的具體操作技巧,需要的朋友可以參考下
    2017-08-08

最新評(píng)論