随机算法设计思想总结
现实计算机无法产生真正的随机数,都是伪随机数
数值概率算法
不保证每次都是正确答案,但随着尝试次数增加,正确概率会越来越高。(大数定律下的准确性)
-
输出可能出错
-
可控的误差范围
-
多次重复可以提升正确率
-
随机投点计算派值
蒙特卡洛算法
算法内部使用随机数,结果可能出错,但有概率保证其正确性。
🎯 例子:
-
主元素问题
✅ 特点:
-
输入固定 → 输出有概率误差
-
快速、简便
-
多次运行可提高正确率
拉斯维加斯算法
结果一定正确,但运行时间不固定!
🎯 例子:
-
n后问题
✅ 特点:
-
结果 100% 正确
-
时间复杂度是 随机变量
-
可能很快,也可能很慢
舍伍德算法
输入为确定的,算法在“多个正确答案”中随机选择一个作为输出。
🎯 例子:
-
随机洗牌
-
设计高效数据结构——跳跃表
-
线性时间选择
-
快速排序
✅ 特点:
-
输出总是正确的
-
结果不是唯一的
-
多次运行可能得到不同正确解