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::rand
std::rand
| å®ä¹äºå¤´æä»¶ <cstdlib>
|
||
| int rand(); |
||
è¿å â0â ä¸ RAND_MAX ï¼å
å« 0 ä¸ RAND_MAX ï¼çéæºæ°ã
std::srand() æç§ rand() æç¨çä¼ªéæºæ°çæå¨ãè¥å¨ä»»ä½å° srand() çè°ç¨åä½¿ç¨ rand() ï¼å rand() 表ç°å¦åå®ä»¥ srand(1) æç§ã
æ¯æ¬¡ä»¥ srand() æç§ rand() ï¼å®å¿
é¡»å¨åç»è°ç¨ä¸äº§çç¸åç弿°åã
æ ååºä¸çå
¶ä»å½æ°å¯è°ç¨ rand ãåªä¸ªå½æ°è¿ä¹åæ¯å®ç°å®ä¹çã
rand() æ¯å¦çº¿ç¨å®å
¨æ¯å®ç°å®ä¹çã
åæ°
ï¼æ ï¼
è¿åå¼
â0â ä¸ RAND_MAX é´çéæºæ´æ°å¼ã
注解
ä¸ä¿è¯çæçéæºæ°åè´¨éãè¿å»ï¼ä¸äº rand() å¨éæºæ§ãåå¸å产ççåºå卿䏿䏥é缺é·ï¼å¨ä¸ä¸ªä¼æå¨ç¥çä¾åä¸ï¼è°ç¨ä¹é´æä½ä½ç®åå°å¨ 1 ä¸ 0 é´åæ¢ï¼ã
对äºä¸¥èçéæºæ°çæéæ±ä¸æ¨è rand() ãæ¨èç¨ C++11 çéæºæ°çæè®¾æ½æ¿æ¢ rand() ã (C++11 èµ·)
示ä¾
#include <cstdlib> #include <iostream> #include <ctime>  int main() { std::srand(std::time(nullptr)); // 以å½åæ¶é´ä¸ºéæºçæå¨çç§å int random_variable = std::rand(); std::cout << "Random value on [0 " << RAND_MAX << "]: " << random_variable << '\n';  // æ 6 é¢è²å 20 次 for (int n = 0; n != 20; ++n) { int x = 7; while(x > 6) x = 1 + std::rand() / ((RAND_MAX + 1u) / 6); // 注æï¼ 1 + rand() % 6 æåå·®ï¼ std::cout << x << ' '; } }
å¯è½çè¾åºï¼
Random value on [0 2147483647]: 726295113 6 3 6 2 6 5 6 3 1 1 1 6 6 6 4 1 3 6 4 2
åé
| (C++11) |
产çå¨ä¸ä¸ªèå´ä¸åååå¸çæ´æ°å¼ (类模æ¿) |
| åå§åä¼ªéæºæ°çæå¨ (彿°) | |
| std::rand çæçæå¤§å¯è½å¼ (å®å¸¸é) | |
| çææå®èå´ä¸çéæºæ´æ° (彿°æ¨¡æ¿) |