朴素洗牌的现实问题

2024-04-19

我正在写一些文章,旨在通过使用与扑克相关的主题来教授入门编程概念。目前,我正在研究洗牌的主题。

As 杰夫·阿特伍德 (Jeff Atwood) 在 CodingHorror.com 上指出 http://www.codinghorror.com/blog/archives/001015.html,一种简单的洗牌方法(迭代数组并将每张卡与数组中其他位置的随机卡交换)会创建不均匀的排列分布。在实际应用中,我只会使用Knuth Fisher-Yates 洗牌 http://en.wikipedia.org/wiki/Knuth_shuffle以获得更均匀的随机性。但是,我不想用对编码器不太友好的算法来解释编程概念。

这就引出了一个问题:如果黑帽知道你正在使用 52 张牌的简单洗牌方式,他们会有多大的优势?看起来它会无限小。


与简单的洗牌相比,克努斯洗牌是一个微不足道的变化:只需与牌组剩余(未洗牌)部分中的任何卡交换,而不是与整个牌组中的任何位置交换。如果您将其视为从剩余的未选择的卡片中按顺序重复选择下一张卡片,那么它也非常直观。

就我个人而言,我认为,当正确的算法不再复杂(并且更容易可视化!)时,教给学生一个糟糕的算法是一种糟糕的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

朴素洗牌的现实问题 的相关文章

  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • 简单的排名算法

    我需要创建一个民意调查 按照项目的好坏顺序创建一个排名列表 我打算向每个用户展示两个项目 让他们选择一个他们认为更好的项目 然后多次重复这个过程 它有点类似于您在社交网络电影 我应该如何根据收到的答案对项目进行排名 看着那 这ELO国际象棋
  • 关于Marching Cubes算法的澄清

    关于Marching Cubes 我对其算法和实现有一些疑问 我已经阅读了 Marching Cubes 的 Paul Bourke 优秀文章以及网站上可用的源代码 但是 我在理解以及如何以自己的方式实现算法方面仍然遇到了一些问题 问题如下
  • 定点数学比浮点运算快吗?

    多年前 即 20 世纪 90 年代初期 我构建了图形软件包 该软件包基于定点算术和预先计算的 cos sin 表格以及使用牛顿近似方法进行 sqrt 和对数近似的缩放方程来优化计算 这些先进技术似乎已经成为图形和内置数学处理器的一部分 大约
  • Python Pandas:沿一列比较两个数据帧,并返回另一个数据帧中两个数据帧的行内容

    我正在处理两个 csv 文件并作为数据框 df1 和 df2 导入 df1 有 50000 行 df2 有 150000 行 我想将 df2 的 时间 与 df1 求时间差并返回所有列的值 对应相似的行 保存在df3中 时间同步 例如 35
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • 为什么 Dijkstra 算法使用减密钥?

    Dijkstra 教给我的算法如下 while pqueue is not empty distance node pqueue delete min if node has been visited continue else mark
  • 面试题:三个数组,O(N*N)

    假设我们有three长度数组N其中包含任意数量的类型long 然后我们得到一个数字M 相同类型 我们的任务是选择三个数字A B and C每个数组中的一个 换句话说A should从第一个数组中选取 B从第二个开始和C从第三个 所以总和A
  • 颜色变换器功能上的堆栈溢出错误

    我有两种颜色 红色 和 鲑鱼色 我需要动态创建面板以及面板背景颜色 这些颜色必须介于两种颜色之间 红色 public Color x y protected void Page Load object sender EventArgs e
  • 我如何开始玩五子棋?

    我读到Gomoku http en wikipedia org wiki Gomoku它可以使用 Minimax 和 Alpha Beta 剪枝算法来实现 所以 我阅读了这些算法 现在了解了游戏将如何解决 但是当我坐下来编写代码时 我面临着
  • Java 中旅行商问题的暴力算法

    我正在学校的数学课上做一个项目 我选择做旅行商问题 这是我一直想进行更多研究的问题 但是 我的暴力求解算法遇到了问题 请前往底部更新查看最新版本代码 如果您知道旅行推销员问题是什么 请跳过本段 尽可能概括地说 TSP 是这样的 您是一名推销
  • 要打乱的键值(整数、字符串)列表的最佳结构

    我需要在 Java 中实现一个结构 它是一个键值列表 类型为整数 字符串 并且我想对其进行洗牌 基本上 我想做类似的事情 public LinkedHashMap
  • 用于在链表中查找结点的生产代码

    我在一次采访中被问到这个问题 我被要求编写代码 用于在 O 1 空间和线性时间的生产环境中在链表 其形式为 Y 形式 双臂不一定相等 中查找结点 我想出了这个解决方案 我以前在某处见过 1 Measure lengths of both l
  • 在 Python 中从 Excel 复制 YEARFRAC() 函数

    因此 我使用 python 来自动执行一些必须在 Excel 中执行的重复任务 我需要做的计算之一需要使用yearfrac 这在Python中被复制了吗 I found this https lists oasis open org arc
  • 添加边后更新最大流量

    考虑我们有一个网络流量 并使用 Edmond Karp 算法 我们已经拥有网络上的最大流量 现在 如果我们向网络添加任意边 具有一定容量 更新最大流量的最佳方法是什么 我正在考虑更新关于新边缘的残差网络 并再次寻找增强路径 直到找到新的最大
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都

随机推荐

  • 如何在不暂存的情况下 git 添加新文件?

    为了有效地 并按预期 使用 git 我进行了小的原子提交 而我确实有更长的会话 我所做的不仅仅是一件事 因此 我大量使用git add p 不过 这不适用于全新的文件 因为我以后往往会忘记它们 我想做的是告诉git那里is一个新文件 我希望
  • 我在哪里可以学习编写词法分析器的基础知识?

    我想学习如何编写词法分析器 我的大学课程有一项作业 我们必须编写一个解析器 以及与之配套的词法分析器 但这是给我们的 没有任何指导或反馈 超出了标准 所以我并没有真正从中学到很多东西 搜索这个主题后 我只能找到相当高级的文章 这些文章重点关
  • 如何通过 UNC 加速 Powershell Get-Childitem

    DIR or GCI在 Powershell 中很慢 但在 CMD 中很快 有什么办法可以加快这个速度吗 在 CMD exe 中 经过亚秒级延迟后 其响应速度与 CMD 窗口可以跟上的速度一样快 dir remote server doma
  • OpenJPA 的 Maven 原型

    问候 我刚刚开始探索 Maven 我使用 m2eclipse 就像在 Eclipse 中使用 Maven 一样 我发现有一个基于休眠的原型 组 ID com rfc maven archetypes 和 工件 ID jpa maven ar
  • 使用矩形在图像上创建搜索区域

    我有一个显示图像的图像查看器 我想使用鼠标在图像上绘制一个矩形 并获取矩形的 x 和 y 坐标 X1 X2 Y1 和 Y2 我将使用这些坐标创建一个搜索区域 并在数组中查找最大值和最小值 该数组的两个轴上的像素数与图像的像素数完全相同 有人
  • 如何在C++中初始化结构体数组?

    我有以下内容struct在我的 C 代码中 我使用的是 Visual Studio 2010 struct mydata string scientist double value 我想做的是能够以快速的方式初始化它们 类似于 C99 中的
  • PHP- HTML 解析 :: 如何使用简单的 html dom 解析器获取网页的字符集值?

    PHP 如何简单地获取网页的字符集值html dom 解析器 http simplehtmldom sourceforge net utf 8 windows 255 等 备注 必须使用 html dom 解析器来完成http simple
  • Symfony2 createQuery 按字段排序

    你好 我在 phpmyadmin 中写了这个查询 它可以工作 gr8 SELECT u FROM users AS u WHERE u id 14469 OR u id 685 ORDER BY u id field u id 14469
  • FFMPEG - 连续的非单调 DTS

    我有几个需要连接的文件 有时文件工作和连接似乎没有问题 然后在其他文件上 文件不会连接 我得到 非单调 DTS 我一直在谷歌上搜索我应该对这些文件进行哪些处理 以便它们正确连接 但我仍然没有找到 有没有办法让所有文件的 DTS 完全相同 我
  • 是否可以使用不同的占位符掩码输入?

    由于我的表单没有标签 我希望能够在 Angular 和 Angular UI Utils Mask 中使用不同的占位符 div div
  • AutoCAD 如何计算仅由拟合点定义的样条曲线的终点切线?

    AutoCAD 允许将 SPLINE 实体存储在仅由以下定义的 DXF 文件中 拟合点 问题是 这样的样条定义有无限 数值正确的解决方案 Autodesk 不提供必要的 从给定的拟合点计算所需参数的信息 tl dr 缺少的信息是估计的起点和
  • 图像轮廓轴

    对于放射线扫描 我已经能够获取轮廓 我有兴趣找到中心轴 我怎样才能用Python做到这一点 这是我的轮廓代码 import cv2 img cv2 imread A png imgray cv2 cvtColor img cv2 COLOR
  • 字符串终止符'\0'如何与整数常量0具有相同的值?

    我有以下代码 include
  • iOS 中离线网站的最佳实践

    我正在构建一个需要下载大量 html5 内容的应用程序 本质上 它的工作原理与您在 iPad 上看到的杂志应用程序类似 只是它不使用图像 而是使用 UIWebViews 和 HTML 我的问题是存储它的最佳方法是什么 我正在考虑要么将下载的
  • 当“卸载...”按钮被禁用时卸载 Eclipse 插件

    有时 由于某种原因 帮助 gt 关于 Eclipse gt 安装详细信息 中的 卸载 按钮被禁用 例如 安装 Aptana 插件后 这会强制在 Eclipse Galileo 中使用较旧的安装程序 如何在禁用 卸载 的情况下删除这些插件 尝
  • 删除视图中的绑定对象时出现“致命错误:索引超出范围”

    在修改子视图依赖于绑定对象的数组时 我在避免索引超出范围错误时遇到了一些麻烦 我有一个名为 WorkoutList 的父视图 WorkoutList 有一个 ActiveWorkoutStore 的 EnvironmentObject Ac
  • 删除某些输入上 IE10 的“清除字段”X 按钮?

    确实 这是一个有用的功能 但是有什么方法可以禁用它吗 例如 如果表单是单个文本字段 并且旁边已经有一个 清除 按钮 那么再有 X 就多余了 在这种情况下 最好将其删除 可以吗 如果可以 怎么做 风格 ms clear伪元素 http msd
  • ASP.NET 连接字符串加密/保护

    在 ASP NET 中保护 加密连接字符串的最佳实践是什么 而不仅仅是在 Web Config 中存储为纯文本 看一眼以编程方式加密 NET 中的配置文件 https stackoverflow com questions 21965 pr
  • linux 使用超时(以毫秒为单位)杀死进程

    我想在Linux上指定时间过后强制终止程序 我发现linux中的 timeout util可以在指定时间后杀死程序 但它不接受毫秒 也就是说 timeout TIME PROGRAM 会在 TIME 过去后杀死 PROGRAM 其中 TIM
  • 朴素洗牌的现实问题

    我正在写一些文章 旨在通过使用与扑克相关的主题来教授入门编程概念 目前 我正在研究洗牌的主题 As 杰夫 阿特伍德 Jeff Atwood 在 CodingHorror com 上指出 http www codinghorror com b