鍍金池/ 問(wèn)答/C++  網(wǎng)絡(luò)安全/ 是否可以這么理解 std::seed_seq?

是否可以這么理解 std::seed_seq?

在學(xué)習(xí) <random> 庫(kù)的時(shí)候, 唯獨(dú) seed_seq 看的不是很明白
盡管去 MSDN 看了, 還有 cppreference, 但是都還不是非常明
Google 上對(duì)于 seed_seq 的資料太少了
我的理解是 : 當(dāng)給定的種子不是太好或者一個(gè)線性列表內(nèi)的種子分布不好的時(shí)候, 但又需要大量的隨機(jī)引擎或者大量熵的生成器的時(shí)候, 可以使用 seed_seq
根據(jù) cppreference 的英文介紹, 大概就是這么理解的

一個(gè)好像看懂又覺(jué)得不懂的例子 :

#include <iostream>
#include <random>

using namespace std;
int main(int argc, char *argv[]) {
    seed_seq seq {1, 2, 3, 4, 5};
    vector<int> vec(10);
    seq.generate(vec.begin(), vec.end());
    for(const auto &c : vec) {
        cout << c << endl;
    }
}

不知道我的理解是否正確, 或者各位能否給出一些更詳細(xì)的解釋以及例子呢?

回答
編輯回答
淚染裳
我的理解是 : 當(dāng)給定的種子不是太好或者一個(gè)線性列表內(nèi)的種子分布不好的時(shí)候, 但又需要大量的隨機(jī)引擎或者大量熵的生成器的時(shí)候, 可以使用 seed_seq.
std::seed_seq is generally intended to be used if you don't trust the default implementation to properly initialize the state of the engine you're using.1
能否給出一些更詳細(xì)的解釋以及例子呢?
https://stackoverflow.com/a/2...

或許該看些密碼學(xué)的書(shū)? 窩這學(xué)期剛開(kāi)學(xué)時(shí)興致沖沖的拿著一本密碼學(xué)原版(從大數(shù)講起的, 有很多c實(shí)現(xiàn), 不過(guò)后來(lái)因?yàn)?del>太忙太懶了, 沒(méi)有看下去(慚愧不已). 里面第十二章就是講隨機(jī)數(shù)的, 雖然窩還沒(méi)有看到, 但是窩覺(jué)得這本書(shū)非常不錯(cuò), 非常偏向?qū)崙?zhàn), 理論也講的很不錯(cuò). 就是國(guó)內(nèi)沒(méi)什么知名度. 所以在這里想你推薦下, 你學(xué)random庫(kù)肯定發(fā)現(xiàn)需要很多數(shù)論的知識(shí)吧.

https://www.amazon.com/Crypto...

國(guó)內(nèi)有引進(jìn)的原版, 你可以自己搜下.


  1. https://stackoverflow.com/a/4... ?
2018年3月30日 09:51