随机化算法即随机生成因子,利用其随机生成数结合题目条件对所给数据进行校验。
需要保证前提:
1.有明确的正确数据以供校验
2.随机化的次数必须要足够多以保证所有数据得到验证以保障准确性
mt19937:
是 \(c++11\) 中加入的新特性,它是一种随机数算法,用法与 \(rand()\) 函数类似但是具有速度快,周期长的特点(它的名字便来自周期长度:\(2^{19937}-1\))。说的直白一点,我们都知道 \(rand()\)在\(windows\)下生成的数据范围为 \(0-32767\)。但是这个函数的随机范围大概在(\(−maxint,+maxint\))(\(maxint\) 为 \(int\) 类型最大值)。
用法:
#include<bits/stdc++.h>
using namespace std;
int main() {
mt19937 mt_rand(time(0));
cout << mt_rand() << endl;
return 0;
}
例题:2019 ICPC Asia-East Continent Final-H
1.蒙特卡洛方法(Monte-Carlo Simulation)
蒙特卡洛方法是一种以概率统计理论为指导的一类非常重要的数值计算方法。可以通过随机通过产生随机数的方式来解决计算问题。比如估算 \(\pi\) 和计算不规则图形的面积。
2.模拟退火
2018南京区域赛-D
可以用来求最小圆覆盖个最小球覆盖,二维费马点。
其他:
2018南京区域赛-K
原文链接: https://www.cnblogs.com/1024-xzx/p/12968868.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/350937
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!