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

C++中的偽隨機(jī)數(shù)

 更新時(shí)間:2022年07月20日 10:06:19   作者:舒泱  
這篇文章主要介紹了C++中的偽隨機(jī)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

真隨機(jī)數(shù)

自然界中的有很多不確定的物理現(xiàn)象,通過(guò)測(cè)量這些現(xiàn)象,就可以獲得真隨機(jī)數(shù)。

比如白噪聲的幅值、電子元器件的電壓噪聲等,真隨機(jī)數(shù)可以通過(guò)用硬件對(duì)這些參數(shù)進(jìn)行采集獲得。

偽隨機(jī)數(shù)

偽隨機(jī)數(shù)序列是用確定性的算法計(jì)算出來(lái)的周期很長(zhǎng)的序列。

程序的運(yùn)行過(guò)程是一個(gè)確定的過(guò)程,每一條指令都是確定的,因此不能產(chǎn)生真的隨機(jī)數(shù)。       

說(shuō)到偽隨機(jī)數(shù)就會(huì)說(shuō)到種子,什么是種子呢,我們可以將種子理解為一個(gè)初始值,特定算法根據(jù)這個(gè)初始值產(chǎn)生一個(gè)一定的序列,生成的這個(gè)序列“看起來(lái)”是隨機(jī)的,實(shí)際上是一個(gè)周期很長(zhǎng)的確定序列。

如果每次的種子設(shè)置得相同,那么產(chǎn)生的序列都是相同的。       

舉個(gè)例子

我們可以簡(jiǎn)單的設(shè)置這個(gè)種子為某個(gè)數(shù),比如1。

請(qǐng)看如下代碼,用srand()設(shè)置種子的值,用rand()產(chǎn)生偽隨機(jī)數(shù)序列,需要包含頭文件#include <stdlib.h>。重復(fù)運(yùn)行下列代碼,因?yàn)榉N子相同,所以每次輸出的序列都是如圖的序列"41 18467 6334 26500 …"。

srand(1);   // 設(shè)置種子的值為1,如果不設(shè)置,默認(rèn)種子為1
for (int i = 0; i < 10; ++i) {
    cout << rand() << " ";	// 輸出10個(gè)偽隨機(jī)數(shù)
}

如果每次種子設(shè)置得不同,那生成的序列也將不同。 如何獲得不同的種子呢?       

可以用C語(yǔ)言中的庫(kù)函數(shù) time_t time(time_t *seconds) 返回自1970-01-01 00:00:00 UTC 起經(jīng)過(guò)的時(shí)間,以秒為單位。

這個(gè)函數(shù)的入?yún)econds也能保存結(jié)果,請(qǐng)看如下代碼,輸出的t和seconds的值是一樣的。

    time_t seconds;
    time_t t=time(&seconds);
    cout << t <<" "<< seconds <<endl;  // t和seconds的值是一樣的

那么,我們將當(dāng)前的時(shí)間設(shè)置為種子,由于時(shí)間一直在變,種子就一直在變,每次就能生成不同的偽隨機(jī)數(shù)序列。

time_t t=time(nullptr);
srand(t);   // 設(shè)置種子的值為時(shí)間
for (int i = 0; i < 10; ++i) {
    cout << rand() << " ";
}

C++代碼示例

題目

將1-100的有序序列變成無(wú)序序列,要求每次運(yùn)行的結(jié)果不同。

// 題目:將1-100的有序序列變成無(wú)序序列,要求每次運(yùn)行的結(jié)果不同。
void fun(vector<int> &vec) {
    time_t t = time(nullptr);
    srand(t);   // 設(shè)置種子的值為時(shí)間
    rand();
    for (int i = 0; i < 500; ++i) {
        // 每次隨機(jī)交換數(shù)組中的兩位
        swap(vec[rand() % 100], vec[rand() % 100]);
    }  
}
int main() {
    vector<int> vec(100);
    for (int i = 0; i < 100; ++i) {
        vec[i] = i+1;
    }
    fun(vec);
    for (auto it : vec) {
        cout << it << " ";
    }
    cout << endl;
    system("pause");
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • C 語(yǔ)言二叉樹(shù)幾種遍歷方法詳解及實(shí)例

    C 語(yǔ)言二叉樹(shù)幾種遍歷方法詳解及實(shí)例

    這篇文章主要介紹了C 語(yǔ)言二叉樹(shù)幾種遍歷方法詳解及實(shí)例的相關(guān)資料,二叉樹(shù)在數(shù)據(jù)結(jié)構(gòu)當(dāng)中是非常重要的知識(shí)要點(diǎn),這里對(duì)二叉樹(shù)進(jìn)行了總結(jié),需要的朋友可以參考下
    2017-01-01
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)不掛科指南之線(xiàn)性表詳解

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)不掛科指南之線(xiàn)性表詳解

    線(xiàn)性表是由?n(n≥0)個(gè)數(shù)據(jù)元素組成的有窮序列,這篇文章主要來(lái)和大家來(lái)了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中的線(xiàn)性表,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-09-09
  • C++語(yǔ)言實(shí)現(xiàn)拼圖游戲詳解

    C++語(yǔ)言實(shí)現(xiàn)拼圖游戲詳解

    這篇文章主要為大家詳細(xì)介紹了C++基于EasyX庫(kù)實(shí)現(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲

    用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Visual Studio 2022中創(chuàng)建的C++項(xiàng)目無(wú)法使用萬(wàn)能頭<bits/stdc++.h>的解決方案

    Visual Studio 2022中創(chuàng)建的C++項(xiàng)目無(wú)法使用萬(wàn)能頭<bits/stdc++.h>的

    如果大家也遇到下面這種問(wèn)題,可能是沒(méi)有include文件夾中沒(méi)有bits/stdc++.h,這篇文章主要介紹了Visual Studio 2022中創(chuàng)建的C++項(xiàng)目無(wú)法使用萬(wàn)能頭<bits/stdc++.h>的解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 淺談C++為什么非要引入那幾種類(lèi)型轉(zhuǎn)換

    淺談C++為什么非要引入那幾種類(lèi)型轉(zhuǎn)換

    這篇文章主要介紹了C++為什么非要引入那幾種類(lèi)型轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 基于Matlab實(shí)現(xiàn)水波倒影特效的制作

    基于Matlab實(shí)現(xiàn)水波倒影特效的制作

    這篇文章主要介紹了如何利用Matlab制作出水波倒影的特效,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • C語(yǔ)言實(shí)現(xiàn)電子英漢詞典系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)電子英漢詞典系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電子英漢詞典系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++ 中RTTI的使用方法詳解

    C++ 中RTTI的使用方法詳解

    這篇文章主要介紹了C++ 中RTTI的使用方法詳解的相關(guān)資料,希望通過(guò)本文大家能理解使用RTTI,需要的朋友可以參考下
    2017-09-09
  • 深入淺析 C++ 調(diào)用 Python 模塊

    深入淺析 C++ 調(diào)用 Python 模塊

    Python 提供了 C++ 庫(kù),使得開(kāi)發(fā)者能很方便地從 C++ 程序中調(diào)用 Python 模塊。接下來(lái)通過(guò)本文給大家介紹 C++ 調(diào)用 Python 模塊的相關(guān)知識(shí),需要的朋友參考下吧
    2016-03-03

最新評(píng)論