C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- å¸¸ç¨æ°å¦å½æ°
- æ°å¦ç¹æ®å½æ°
- ä¼ªéæºæ°çæ
- std::uniform_random_bit_generator
- std::linear_congruential_engine
- std::mersenne_twister_engine
- std::srand
- std::rand
- std::subtract_with_carry_engine
- std::discard_block_engine
- std::independent_bits_engine
- std::shuffle_order_engine
- std::random_device
- std::uniform_int_distribution
- std::uniform_real_distribution
- std::generate_canonical
- std::bernoulli_distribution
- std::binomial_distribution
- std::negative_binomial_distribution
- std::geometric_distribution
- std::poisson_distribution
- std::exponential_distribution
- std::gamma_distribution
- std::weibull_distribution
- std::extreme_value_distribution
- std::normal_distribution
- std::lognormal_distribution
- std::chi_squared_distribution
- std::cauchy_distribution
- std::fisher_f_distribution
- std::student_t_distribution
- std::discrete_distribution
- std::piecewise_constant_distribution
- std::piecewise_linear_distribution
- std::seed_seq
- RAND_MAX
- std::midpoint
- std::lerp
- std::has_single_bit
- std::bit_ceil
- std::bit_floor
- std::bit_width
- std::rotl
- æµ®ç¹ç¯å¢
- std::complex
- std::valarray
- ç¼è¯æ¶æçæ°ç®æ¯
- std::gcd
- std::lcm
- æ°å¦å¸¸æ°
- std::bit_cast
- std::rotr
- std::countl_zero
- std::countl_one
- std::countr_zero
- std::countr_one
- std::popcount
- 注é
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >æ°å¼åº >ä¼ªéæºæ°çæ > std::random_device
std::random_device
| å®ä¹äºå¤´æä»¶ <random>
|
||
| class random_device; |
(C++11 èµ·) | |
std::random_device æ¯çæéç¡®å®éæºæ°çååå叿´æ°éæºæ°çæå¨ã
std::random_device å¯ä»¥ä»¥å®ç°å®ä¹çä¼ªéæºæ°å¼æå®ç°ï¼è¥éç¡®å®æºï¼ä¾å¦ç¡¬ä»¶è®¾å¤ï¼å¯¹å®ç°ä¸å¯ç¨ãæ¤æ
åµä¸æ¯ä¸ª std::random_device 对象å¯çæå䏿°å¼åºåã
æåç±»å
| Â | |
| æåç±»å | å®ä¹ |
result_type
|
unsigned int |
æå彿°
æé | |
| æé 弿 (å ¬å¼æå彿°) | |
| operator= (被å é¤) |
èµå¼è¿ç®ç¬¦è¢«å é¤ (å ¬å¼æå彿°) |
çæ | |
| æ¨è¿å¼æç¶æå¹¶è¿åçæçå¼ (å ¬å¼æå彿°) | |
ç¹å¾ | |
| è·å¾éç¡®å®éæºæ°çæå¨ççµä¼°è®¡ (å ¬å¼æå彿°) | |
| [éæ] |
è·åè¾åºèå´ä¸çæå°å¯è½å¼ (å ¬å¼éææå彿°) |
| [éæ] |
è·åè¾åºèå´ä¸çæå¤§å¯è½å¼ (å ¬å¼éææå彿°) |
注解
å¼å¾æ³¨æç std::random_device ä¸ºç¡®å®æ§çå®ç°æ¯ MinGW çæ§çæ¬ï¼æ¼æ´ 338 ï¼ GCC 9.2 èµ·ä¿®å¤ï¼ï¼è½ç¶åå¨å¦ mingw-std-random_device çæ¿æ¢ãææ°ç MinGW çæ¬å¯ä» GCC with the MCF thread model ä¸è½½ã
示ä¾
è¿è¡æ¤ä»£ç
#include <iostream> #include <string> #include <map> #include <random>  int main() { std::random_device rd; std::map<int, int> hist; std::uniform_int_distribution<int> dist(0, 9); for (int n = 0; n < 20000; ++n) { ++hist[dist(rd)]; // 注æï¼ä» æ¼ç¤ºï¼ä¸æ¦çµæ± èå°½ï¼ // è®¸å¤ random_device çå®ç°å°±æ¥å§ä¸æ» // 对äºå®è·µä½¿ç¨ï¼ random_device éå¸¸ä» ç¨äº // æç§å¦ mt19937 ç PRNG } for (auto p : hist) { std::cout << p.first << " : " << std::string(p.second/100, '*') << '\n'; } }
å¯è½çè¾åºï¼
0Â : ******************** 1Â : ******************* 2Â : ******************** 3Â : ******************** 4Â : ******************** 5Â : ******************* 6Â : ******************** 7Â : ******************** 8Â : ******************* 9Â : ********************