From e1f0a99425d7a3b9e04763dec6a6d8485e42e460 Mon Sep 17 00:00:00 2001
From: AmenLin <597863503@qq.com>
Date: Thu, 5 Apr 2018 18:28:24 +0800
Subject: [PATCH] 1
---
PPT/JS-02-shuffle-L.html | 202 +++++++++++++++++++++++++++++++++++++++
1 file changed, 202 insertions(+)
create mode 100644 PPT/JS-02-shuffle-L.html
diff --git a/PPT/JS-02-shuffle-L.html b/PPT/JS-02-shuffle-L.html
new file mode 100644
index 00000000..46bccd7e
--- /dev/null
+++ b/PPT/JS-02-shuffle-L.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+ 葡萄藤PPT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ reveal.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 洗牌算法具体指的是什么
+ 深圳分院:林健凡
+
+
+ 目录
+ 1.背景介绍
+ 2.知识剖析
+ 3.常见问题
+ 4.解决方案
+ 5.编码实战
+ 6.扩展思考
+ 7.参考文献
+ 8.更多讨论
+
+
+
+
+
+
+ 简单来说
+ 洗牌算法是一个用来将一个有限集合生成一个随机排列的算法(数组随机排序)
+ 这个算法生成的随机排列是等概率的
+
+
+
+
+
+ 伪随机(概率)
+ 真随机(几率)
+
+
+
+
+ 所谓伪随机,是指概率事件,就是出现得并不规律,但是大致上就是这么多次数。比如1%,如果是每100次为一周期,那么1%意味着,尽管你不确定这1次究竟会什么时候出现,但100次中必然出现1次,不多一次也不会少一次。概率事件之间相互影响,一旦这一次没有触发,那么下一次触发的概率就会变大
+
+
+ 而真随机则是指几率。比如1%的几率,意味着你这次触发特殊事件是1%的可能性,下次也是,每一次都是。如果你这次失败,下次依然保持在1%的可能性。还是上面的例子,1%的几率,100次中可能出现100次,也可能1次都不会出现,几率事件不会互相影响,因为每一次都是一个独立的事件
+
+
+
+
+
+
+
+ Fisher–Yates shuffle 洗牌算法
+
+
+
+ Fisher–Yates shuffle 洗牌算法原始版
+
+
+ - 写下从 1 到 N 的数字
+ - 取一个从 1 到 N 的数字的随机数 k
+ - 从低位开始,得到第 k 个数字(这个数字还没有被取出),把它写在独立的一个列表的最后一位
+ - 重复第 2 步,直到所有的数字都被取出
+ - 第 3 步写出的这个序列,现在就是原始数字的随机排列
+
+
+
+ 计算机会花很多无用的时间去计算上述第 3 步的剩余数字
+
+
+
+ Fisher–Yates shuffle 洗牌算法进化版
+
+
+
+
+ 在每次迭代时将随机选出的这个数字排到数组的最后
+
+
+
+
+ 时间复杂度是指执行算法所需要的计算工作量
+ 空间复杂度是指执行这个算法所需要的内存空间
+
+
+
+
+
+
+ 如何打乱数组排序
+ 是否真的解决了完全随机
+
+
+
+ Fisher–Yates Shuffle的JS实现
+
+
+
+
+ 怎么保证这个算法得到的数组是完全随机的(即等概)?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+