洗牌

简介: 平时喜欢打牌玩玩简述如下: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' ]
 */

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

目录
相关文章
|
消息中间件 缓存 前端开发
COLA架构 入门
COLA架构 入门
3960 0
|
缓存 编解码 网络协议
一文带你由浅入深Netty异步非阻塞世界
一文带你由浅入深Netty异步非阻塞世界
一文带你由浅入深Netty异步非阻塞世界
|
传感器 机器学习/深度学习 数据采集
【航迹关联】基于NNDA、PDA、JPDA三种算法实现航迹关联附matlab代码
【航迹关联】基于NNDA、PDA、JPDA三种算法实现航迹关联附matlab代码
|
机器学习/深度学习 JavaScript 数据挖掘
DL框架之MXNet :深度学习框架之MXNet 的简介、安装、使用方法、应用案例之详细攻略
MXNet 是亚马逊(Amazon)选择的深度学习库,并且也许是最优秀的库之一。它拥有类似于 Theano 和 TensorFlow 的数据流图,为多 GPU 配置提供了良好的配置,有着类似于 Lasagne 和 Blocks 更高级别的模型构建块,并且可以在你可以想象的任何硬件上运行(包括手机)。对 Python 的支持只是其冰山一角—MXNet 同样提供了对 R、Julia、C++、Scala、Matlab,和 Javascript 的接口。
DL框架之MXNet :深度学习框架之MXNet 的简介、安装、使用方法、应用案例之详细攻略
|
11月前
|
自然语言处理
Nature:人类亲吻难题彻底难倒LLM,所有大模型全部失败!LLM根本不会推理,只是工具
近期,《自然》杂志发表的研究显示,所有大型语言模型(LLM)在解释特定情境下人类亲吻行为时均失败。尽管LLM在语言处理和文本生成上表现出色,但在理解和推理复杂人类行为方面存在显著限制,表明其缺乏对人类情感、社会及文化背景的深入理解。专家认为LLM更像是工具而非智能体,虽在客户服务、内容创作等领域有价值,但在复杂推理和理解方面仍显不足。
237 37
|
机器学习/深度学习 移动开发 算法
Python垃圾识别系统,TensorFlow+Django网页框架+深度学习模型+卷积网络【完整代码】
垃圾识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对5种垃圾数据集进行训练,最后得到一个识别精度较高的模型。并基于Django,开发网页端操作平台,实现用户上传一张垃圾图片识别其名称。
350 0
|
Python
点云在任意平面上获取二维投影
点云在任意平面上获取二维投影
1605 0
点云在任意平面上获取二维投影
|
安全 C#
阿里云域名新注、续费、转入收费价格表(最新版)
阿里云域名价格表包括域名注册、域名续费及域名转入价格,不同时期的收费价格是不一样的,本文整理了2022年最新版的阿里云域名新注、续费、转入收费价格表,可供读者参考!
4494 0
阿里云域名新注、续费、转入收费价格表(最新版)
|
C++
Qt动态添加控件并设置大小位置等属性
Qt动态添加控件并设置大小位置等属性
1244 0
|
弹性计算 负载均衡 容灾
阿里云服务器地域怎么选?什么是可用区?可用区选择攻略
阿里云服务器地域和可用区分布及选择攻略,什么是地域?什么是可用区?阿里云服务器可用区如何选择?阿里云服务器地域怎么选?
1939 0
阿里云服务器地域怎么选?什么是可用区?可用区选择攻略