问题标签 [shuffle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
921 浏览

oneliner scramble 程序

又到了一年中的那个时候,程序员想要重新排列一个列表,使得没有任何元素位于其原始位置(至少在荷兰,我们庆祝Sinterklaas并挑选吸管来决定谁写谁一首诗)。有没有人有一个很好的 Python单一语句

因此,输入示例:range(10)

输出示例:[2,8,4,1,3,7,5,9,6,0]

错误的输出将是[2,8,4,1,3,5,7,9,6,0]因为5在其原始位置。这将意味着第 5 个人必须为自己写一首诗,这不那么有趣。

编辑许多人只要需要就可以重复分配任务,并发现实际上解决方案是令人满意的。这是一种不好的方法,因为理论上这可能需要无限长的时间。Bart 确实提出了更好的方法,但出于某种原因,我无法将其纳入单线...

编辑oneliner,我的意思是single statement。看起来,Python 还能够在一行中压缩多个语句。我不知道。目前有非常好的解决方案,仅使用分号来模拟单行上的多行行为。因此:“你能在一个语句中做到这一点吗?”

0 投票
10 回答
19296 浏览

java中大型列表的最佳列表实现是什么

我必须创建一个包含 n 个元素的大列表(最多 100,000 个)。列表中的每个元素都是一个与列表索引等效的整数。在此之后,我必须在此列表上调用 Collections.shuffle。我的问题是,应该使用哪个列表实现(java 集合或 apache 集合)。我的直觉是 ArrayList 可以在这里很好地使用。所有的想法都值得赞赏。谢谢!

感谢您的投入。我想我坚持使用 ArrayList。我目前正在使用带有 initialCapacity 参数的 ArrayList 构造函数,并且我传递了列表的大小。因此,如果原始列表是 100000,我使用 new ArrayList(100000); 创建这个新列表;因此,我认为我没有创建数组并执行 asList,因为不会有任何调整大小。此外,像 GrowthList 和 LazyList 这样的大多数 apache 集合列表都没有实现 RandomAccess。这肯定会减慢 shuffle(根据 javadocs)。FastArrayList 确实实现了 RandomAccess,但 apache 有一个关于这个类的注释说“这个类不是跨平台的。使用它可能会在某些架构上导致意外失败”。

0 投票
2 回答
878 浏览

我可以选择数组中的一些(不是全部)元素并在 PHP 中对其进行洗牌吗?

我可以选择数组中的一些元素并在 PHP 中对其进行洗牌吗?你知道,当你使用

, 它打乱了数组中的所有元素,但我只想打乱数组中的一些元素,同时保持其他元素不变,怎么做?

0 投票
2 回答
183 浏览

为什么我的 PHP 代码不起作用?

下面是代码:

它是来自 MySQL 查询的二维数组,我想对键为 option1、option2、option3 和 option4 的值进行洗牌。但是我的代码不起作用。我可以自己找到错误。请建议。提前致谢!

0 投票
5 回答
76082 浏览

如何在 Ruby 中随机排序(打乱)数组?

我想让我的数组项目打乱。像这样的东西:

依此类推,随机

0 投票
11 回答
1593 浏览

用 O(1) 内存打印出一个随机列表的算法

读完这个问题后,我开始怀疑:是否有可能有一个不修改或复制原始列表的洗牌算法?

说清楚:

想象一下,给你一个对象列表。列表大小可以是任意的,但假设它非常大(例如,10,000,000 个项目)。您需要以随机顺序打印出列表中的项目,并且需要尽可能快地完成。但是,您不应该:

  • 复制原始列表,因为它非常大,复制会浪费大量内存(可能会达到可用 RAM 的限制);
  • 修改原始列表,因为它以某种方式排序,而稍后的其他部分取决于它的排序。
  • 创建一个索引列表,因为列表非常大,复制需要太多时间和内存。(澄清:这是指任何其他列表,其元素数量与原始列表相同)。

这可能吗?

补充:更多说明。

  1. 我希望列表以真正随机的方式洗牌,所有排列的可能性相同(当然,假设我们有一个适当的 Rand() 函数开始)。
  2. 建议我制作一个指针列表、索引列表或任何其他与原始列表具有相同数量元素的列表,被原始问题明确认为是低效的。如果需要,您可以创建其他列表,但它们应该比原始列表小几个数量级。
  3. 原始列表就像一个数组,您可以通过它在 O(1) 中的索引从中检索任何项目。(所以没有双向链表的东西,你必须遍历列表才能找到你想要的项目。)

补充 2:好的,让我们这样说:你有一个 1TB 的硬盘,里面装满了数据项,每个 512 字节大(一个扇区)。您想在洗牌所有项目时将所有这些数据复制到另一个 1TB 硬盘。您希望尽可能快地执行此操作(单次传递数据等)。你有 512MB 的可用 RAM,不要指望交换。(这是一个理论上的场景,我在实践中没有这样的东西。我只是想找到完美的algorithm.item。)

0 投票
2 回答
14162 浏览

PHP中的随机对象

如何在 PHP 中对对象进行排序?我试过shuffle()了,但这需要一个数组:

这是我的代码:

Avar_dump($items);返回:

0 投票
4 回答
6142 浏览

快速洗牌数字 1 到 4 的方法?

寻找洗牌四个变量(试图改变它们出现在多项选择列表中的顺序)。

我已经摸索了一段时间,但我无法完全理解逻辑,并且在过去的问题中查找随机洗牌给出了超出我的新手技能的超详细算法(以及我对这个程序的需求)我想写,我只想做一个多选图像选择器)。

理想情况下,我想要遵循这个伪代码的东西:

我会发布我当前的常规代码,但坦率地说,这是垃圾。:( 这似乎是一个足够简单的问题,但我就是做错了。

提前致谢!

0 投票
19 回答
192881 浏览

如何在 Unix 命令行或 shell 脚本中打乱文本文件的行?

我想随机打乱文本文件的行并创建一个新文件。该文件可能有数千行。

我怎么能用cat, awk,cut等来做到这一点?

0 投票
2 回答
36779 浏览

Java 的 Collections.shuffle 是做什么的?

我最近发现自己需要确保我的清单没有按顺序排列。Hibernate 很好地以完美的顺序返回它。愚蠢的冬眠,不读我的心。

我查看了我的 Java API,它告诉我它的 shuffle 方法是这样做的:

使用默认随机源随机排列指定列表。

作为好奇的乔治,我想知道这到底意味着什么。有没有我可以学习的数学课程?我可以看到代码吗?Java,你对我的 ArrayList 做了什么?!?!?

更具体地说,这里使用了哪些数学概念?