-
范围:0 - 32767
-
不是真正的随机,只是因为周期很长,看起来像
-
如果不进行初始化,每次输出的结果是相同的
| # include <bits/stdc++.h> |
| using namespace std; |
| |
| signed main(){ |
| freopen("1.out", "w", stdout); |
| for(int i = 1; i <= 10; i++){ |
| cout << rand() << " "; |
| } |
| } |
| 第一次:41 18467 6334 26500 19169 15724 11478 29358 26962 24464 |
| 第二次:41 18467 6334 26500 19169 15724 11478 29358 26962 24464 |
| # include <bits/stdc++.h> |
| using namespace std; |
| |
| signed main(){ |
| freopen("1.out", "w", stdout); |
| cout << time(0) << "time\n"; |
| srand(time(0)); |
| for(int i = 1; i <= 10; i++){ |
| cout << rand() << " "; |
| } |
| } |
| 第一次: |
| 1699190385time |
| 6040 29445 28556 23486 1862 13319 24738 16235 15802 22910 |
| 第二次: |
| 1699190429time |
| 6184 10855 28148 927 29720 22256 30613 18506 21416 14539 |
Xor_shift
1.初始化就是设定随机种子,不同的设定产生不同的伪随机序列
2.异或和移位每次都在上一次产生的值上产生新的值,因为在很大的值中舍弃了一些值,所以每次产生的值看起来就象是随机值,也就是伪随机数
| unsigned i64 Xor_shift(unsigned i64 x){ |
| x ^= x >> 13; |
| x ^= x << 7; |
| x ^= x >> 17; |
| return x; |
| } |
- 13,7,17或13,5,17或26,15,17均可,但不是任意三个数都行
| 以 srand() 的第二组输出作为种子 |
| 789550 1382764 3577452 117791 3832198 2830311 3914891 2387034 2721470 1859012 |
mt19937
| # include <bits/stdc++.h> |
| # define i64 long long |
| using namespace std; |
| |
| signed main(){ |
| freopen("1.in", "w", stdout); |
| mt19937 mt_rand(time(0)); |
| for(int i = 1; i <= 10; i++){ |
| cout << mt_rand() << " "; |
| } |
| } |
| 471076068 2678204948 2173609593 3795441098 2911085438 2517774531 2072600482 3361426292 3805571956 4164973925 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构