洗牌

简介: 平时喜欢打牌玩玩简述如下:1, 初始化数组array,数组长度为54;2, 初始长度为: l = 54;3, i = 0;4, 第i次,在范围 ( 0 到 l - 1) 内生成随机数 r;5, array[r]和array[l-1]交换;6, i++, l--, 直到 l = 0;7, 重复第(4),(5),(6)步;8, array[54]

平时喜欢打牌玩玩

简述如下:

1, 初始化数组array,数组长度为54;
2, 初始长度为: l = 54;
3, i = 0;
4, 第i次,在范围 ( 0 到 l - 1) 内生成随机数 r;
5, array[r]和array[l-1]交换;
6, i++, l--, 直到 l = 0;
7, 重复第(4),(5),(6)步;
8, array[54]便是打散的扑克牌;

随便写写(js) :

// 模拟初始化扑克牌数组
var arr=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
console.log(arr);
var l = arr.length;

var genRandom = function(max){
  return Math.floor(Math.random() * max);
};

for(var j = 0; j < l; j++){
  var tmpKey= genRandom(l - j - 1);
  var tmpValue = arr[tmpKey];
  arr[tmpKey] = arr[l - 1];
  arr[l - 1] =  tmpValue;
}

console.log(arr);
/**
 * 结果:
 *  node card.js
 * [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ]
 * [ 'j', 'e', 'a', 'd', 'c', 'f', 'g', 'h', 'i', 'b' ]
 */

虽然很简单,但是有其亮点,至少只用到了一个数组(指针与数组),而且取值比较方便。其实不需要用到什么链表啊之类的数据结构,而且,用链表对性能消耗比较大(查询和插入等)

目录
相关文章
|
2月前
|
算法 JavaScript C++
如何给扑克洗牌才能更公平
该文章讨论了在线桌游中实现公平洗牌的算法,介绍了几种随机化技术来确保卡牌或游戏元素的排列真正随机,从而保证游戏的公正性和玩家体验。
|
6月前
|
存储 算法 PHP
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
41 1
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
|
6月前
|
算法
联想算法题-发牌序列
联想算法题-发牌序列
36 0
|
算法 Go 索引
870. 优势洗牌:田忌赛马:贪心算法+双指针
这是 力扣上的 870. 优势洗牌,难度为 中等。
125 0
|
机器学习/深度学习 人工智能 算法
STL算法我实现之随机洗牌
STL算法我实现之随机洗牌
75 0
【JavaProject】洗牌斗牛系统
JavaProject & 洗牌斗牛系统 结合ArrayList类的使用,小小实践一下吧
65 0
用Java实现简易的洗牌和发牌功能
在日常生活中,想必大家都玩过或者听过斗地主吧,斗地主大致分为三个过程:洗牌,发牌,玩家按照规则将手中的牌给打完,谁最先打完,谁就获胜。这听起来挺简单的,但是影响你胜利的因素有很多:洗牌,玩家的水平。在赌场中很多人就是在洗牌跟发牌的过程中作弊的,那么我们可不可以用代码来实现洗牌跟发牌的功能来实现相对公平呢?
简单设计一下洗牌和发牌
简单设计一下洗牌和发牌
101 0
简单设计一下洗牌和发牌
|
存储 小程序 Java
Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习
本文讲解:Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习
|
算法 JavaScript
【青训营】- 如何给扑克洗牌才能更公平?
平常在日常生活中,我们总会遇到公平性这个话题。比如,几个人分奖品,怎么样才能公平分配?又或者,年会来个抽奖转盘,怎么样才能让它更公平呢? 那在下面这篇文章呢,我们将谈论关于洗牌的公平性。一起来了解吧~
【青训营】- 如何给扑克洗牌才能更公平?