洗牌算法
来源:互联网 发布:python read csv 编辑:程序博客网 时间:2024/06/06 08:36
要求:给定N张扑克牌和一个随机函数,设计一个洗牌算法。
代码1:
void shuffle1(int *x, int n){int idx;srand(time(0));for (int i = 0; i < n; ++i){idx = rand() % (n - i) + i;swap(x[i], x[idx]);}}这个代码是“从头到尾”洗牌,即第i张牌和[i,n-1]位置的随机一张牌进行交换。rand() % (n - i) + i 得到[i,n-1]之间的随机数。
代码2:
void shuffle2(int *x, int n){int idx;srand(time(0));for (int i = n - 1; i >= 0; --i){idx = rand()%(i+1);swap(x[i], x[idx]);}}
这个代码是“从尾向头”洗牌,即第i张牌和[0,i]位置的随机一张牌进行交换。rand()%(i+1) 得到[0,i]之间的随机数。
阅读全文
0 0
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 洗牌算法
- 清空git缓存
- SpringMVC整体认识(一)
- iOS goback页面刷新问题
- 编程语言共同特性
- SharpGL中Finish和Flush的区别
- 洗牌算法
- Java中的序列化和反序列化
- scraping_深入了解一个网站的方法
- linux下mysql操作
- Codeforces 808B Average Sleep Time 题解
- Dataquest学习总结[6]
- 大前端完整学习路线(详解)(转载)
- 汉诺塔问题
- 10大H5前端框架