当前位置: 首页 > news >正文

随机数板子 - miao

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); 这行代码用于创建一个高质量的随机数生成器。让我详细解释每个部分:

完整代码示例

#include <iostream>
#include <random>
#include <chrono>
using namespace std;int main() {// 创建随机数生成器mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());// 生成随机数cout << "随机整数: " << rng() << endl;// 生成指定范围的随机数uniform_int_distribution<int> dist(1, 100);cout << "1-100的随机数: " << dist(rng) << endl;return 0;
}

各部分解析

1. mt19937

  • Mersenne Twister 19937 伪随机数生成算法
  • 周期很长:2^19937 - 1
  • 生成高质量的随机数

2. chrono::steady_clock::now()

  • 获取当前时间点
  • steady_clock 是单调时钟,不会因系统时间调整而回退

3. .time_since_epoch()

  • 返回从时钟纪元(1970年1月1日)到现在的时间间隔

4. .count()

  • 将时间间隔转换为整数(通常是纳秒或微秒)
  • 作为随机数种子

在算法竞赛中的常见用法

基本随机数生成

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());// 生成随机整数
int random_int = rng();// 生成指定范围随机数 [a, b]
int random_in_range = rng() % (b - a + 1) + a;

使用分布类(推荐)

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());// 整数均匀分布 [1, n]
uniform_int_distribution<int> dist1(1, n);
int x = dist1(rng);// 实数均匀分布 [0.0, 1.0]
uniform_real_distribution<double> dist2(0.0, 1.0);
double y = dist2(rng);

随机打乱数组

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());vector<int> arr = {1, 2, 3, 4, 5};
shuffle(arr.begin(), arr.end(), rng);

替代方案

如果不想写这么长,也可以用简单版本:

// 简单版本(随机性稍差)
mt19937 rng(time(0));// 或者使用随机设备(需要编译器支持)
random_device rd;
mt19937 rng(rd());

在题目代码中的使用

在你之前的代码中:

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());// 打乱数组
shuffle(points.begin(), points.end(), rng);// 或者生成随机索引
int random_index = rng() % points.size();

这样可以确保每次运行程序时都能获得不同的随机序列,对于随机化算法很重要。

http://www.zskr.cn/news/41237.html

相关文章:

  • 在React中实现路由跳转
  • 022304105叶骋恺数据采集第二次作业
  • 2025.11.5模拟赛
  • WordPress Social Feed Gallery插件未授权信息泄露漏洞分析
  • 2025-11-3
  • 2025-11-2
  • 网页打包EXE/APK/IPA出现乱码时怎么回事?
  • Ai元人文:个人阐述疏漏声明与系统性术语修正说明
  • 第一天笔记
  • quick save
  • Codeforces Global Round 28 VP 记录
  • 软件工程团队项目第一次作业
  • 开源一个月Star破7000+!RustFS凭什么火出圈?
  • 日总结 22
  • 重组抗体:从 “天然提取” 到 “基因定制”,抗体技术如何改写生物医药格局?
  • 高性能计算-CUDA-mma PTX 指令行为分析
  • CSP - S 2025 游记
  • [KaibaMath]1019 关于收敛数列拉链定理的证明
  • zMWVIFEk0nKBm5kxQFHLdNaPTtQ=
  • 20251105
  • 2025.11.5博客
  • 郑州西亚斯学院举办智能体创新大赛
  • 课后作业(异常捕获)
  • CSP 2025 游记总结
  • 在AI技术快速实现创意的时代,挖掘用户真实需求成为制胜关键——某知名macOS防睡眠工具需求洞察
  • 2025 年 11 月重型货架厂家推荐排行榜,模具/高位/阁楼/平台/仓储/冷库/定制/立体库/智能/窄巷道/钢平台/抽屉/悬臂/穿梭车/搬运机器人/天金冈货架公司精选
  • 2025 年 11 月小规模财税合规服务商推荐榜:专业记账、税务申报与风险规避一站式解决方案
  • P1668 [USACO04DEC] Cleaning Shifts S 题解
  • 关于浏览器访问http://协议自动跳转至https://的处理
  • 天气预报--查看相应