博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
随机洗牌算法
阅读量:4647 次
发布时间:2019-06-09

本文共 681 字,大约阅读时间需要 2 分钟。

随机洗牌算法:

时间和空间复杂度都为O(n)。

1 #include 
2 3 using namespace std; 4 5 const int maxn = 54; 6 7 void random_shuffle(vector
&a) 8 { 9 srand(int(time(0)));10 int aSize = a.size();11 for(int i = 1; i != aSize; ++i) {12 int j = rand() % (i + 1);13 if(i != j) swap(a[i], a[j]); // 每次都和前面的某一个数进行交换14 }15 }16 17 int main() {18 vector
a;19 for(int i = 1; i <= maxn; i++) a.push_back(i);20 random_shuffle(a);21 for(int i = 0; i < maxn; i++) printf("%d ", a[i]);22 puts("");23 return 0;24 }

 可以由概率算出,每个数(每张牌)在每个位置的概率都是1/maxn。

转载于:https://www.cnblogs.com/jacen789/p/7820089.html

你可能感兴趣的文章
生成网上下载的EF项目对应的数据库
查看>>
ubuntu下搭建cocos2dx编程环境-上
查看>>
如何查看Web服务器并发请求连接数
查看>>
学好ARM开发的意义
查看>>
Python for Infomatics 第13章 网页服务四(译)
查看>>
Sphinx 全文检索
查看>>
Shell编程(一)
查看>>
[转]Ubuntu10下MySQL搭建Amoeba系列(文章索引)
查看>>
Android模糊效果总结
查看>>
Android开发系列(二十七):使用ProgressDialog创建进度对话框
查看>>
文件系统和数据库的对照
查看>>
使用ASP.NET Atlas编写显示真实进度的ProgressBar(进度条)控件
查看>>
vs.net各版本解决方案相互转换工具
查看>>
PHP配置成功后phpinfo中找不到mysql
查看>>
加速计
查看>>
selinux基本
查看>>
python学习笔记——拾壹
查看>>
Python 包
查看>>
PHP常用的缓存技术汇总
查看>>
setTimeout详解
查看>>