问题标签 [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 投票
12 回答
78004 浏览

objective-c - 洗牌 NSMutableArray 的最佳方法是什么?

如果你有一个NSMutableArray,你如何随机打乱元素?

(我对此有自己的答案,发布在下面,但我是 Cocoa 的新手,我很想知道是否有更好的方法。)


更新:正如@Mukesh 所指出的,从 iOS 10+ 和 macOS 10.12+ 开始,有一种-[NSMutableArray shuffledArray]方法可用于随机播放。有关详细信息,请参阅https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc。(但请注意,这会创建一个新数组,而不是在原地打乱元素。)

0 投票
6 回答
3749 浏览

algorithm - 天真的洗牌的现实问题

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

正如Jeff Atwood 在 CodingHorror.com 上指出的那样,一种简单的洗牌方法(遍历数组并将每张卡片与数组中其他地方的随机卡片交换)会导致排列分布不均匀。在实际应用中,我只会使用Knuth Fisher-Yates shuffle以获得更均匀的随机性。但是,我不想用对编码器不太友好的算法来解释编程概念。

这就引出了一个问题:如果黑帽知道你使用的是 52 张牌的天真洗牌,他们会有多大的优势?似乎它会无限小。

0 投票
2 回答
2818 浏览

java - 使用 Collections API 进行随机播放

我变得非常沮丧,因为我似乎无法弄清楚为什么 Collections shuffle 不能正常工作。

可以说我正在尝试对randomizer数组进行洗牌。

出于某种原因,无论我是否调用 shuffle 方法,元素都保持完全相同的排序。有任何想法吗?

0 投票
5 回答
1978 浏览

algorithm - 随机播放列表(带有重复项)以避免相同的元素彼此相邻

我想知道是否有一种“最佳”方法来洗牌包含重复项的元素列表,以便尽可能避免 array[i] == array[i+1] 的情况。

我正在研究加权广告展示(我可以为任何给定的广告商调整每次旋转的展示次数),并希望避免同一广告商连续出现两次。

0 投票
12 回答
70152 浏览

c# - 在 C# 中随机“排序”(随机播放)整数列表的最有效方法

我需要以最有效的方式随机“排序”整数列表(0-1999)。有任何想法吗?

目前,我正在做这样的事情:

0 投票
5 回答
2395 浏览

algorithm - 使用 PRNG 而不是改组生成改组范围

在给定任意种子值的情况下,是否有任何已知算法可以在线性时间和恒定空间(当输出迭代产生时)中生成混洗范围 [0..n)?

假设 n 可能很大,例如数百万,因此不需要潜在地产生每个可能的排列,尤其是因为它不可行(种子值空间需要很大)。这也是需要恒定空间的原因。(所以,我特别不是在寻找数组改组算法,因为这要求范围存储在长度为 n 的数组中,因此会使用线性空间。)

我知道问题 162606,但它没有给出这个特定问题的答案 - 从排列索引到该问题中给出的排列的映射将需要巨大的种子值空间。

理想情况下,它会像一个周期和范围为 的LCG ,但选择和用于 LCGn的艺术是微妙的。简单地满足 LCG 的限制并在整个周期内满足我的要求,但我想知道是否有更好的想法。acac

0 投票
8 回答
8450 浏览

java - 有没有办法将 Knuth shuffle 应用于 Stack 数据结构?

对于编程课,我正在为第一个家庭作业创建一个二十一点程序。教授给了我们一个示例 Card 类,其中包括将它们添加到卡片组的方法。对于她的套牌,她使用了一个 ArrayList,您可以使用 Collections.shuffle() 方法轻松地进行 Knuth Shuffle。

尽管(显然)该方法不适用于堆栈,但我认为堆栈结构最适合该程序,因为您可以将卡片弹出和推入和推出牌组。

0 投票
7 回答
930 浏览

shuffle - 改组有偏随机数

在思考这个问题并与参与者交谈时,出现了一个想法,即对一组有限的明显有偏差的随机数进行洗牌会使它们随机化,因为你不知道它们被选中的顺序。这是真的吗?如果是这样,有人可以指出一些资源吗?

编辑:我想我可能有点不清楚。假设一个坏的随机数生成器。取 n 个值。这些是有偏见的(rng 不好)。有没有办法通过改组使多次试验的 rng 输出在统计上与已知良好 rng 的输出相匹配?

0 投票
11 回答
273427 浏览

python - 用python打乱一个数组,用python随机化数组项顺序

用 python 打乱数组的最简单方法是什么?

0 投票
7 回答
28849 浏览

c# - C#:Swap 方法的良好/最佳实现

我读过这篇关于洗牌的文章,在许多洗牌和排序算法中,您需要交换列表或数组中的两个项目。但是一个好的高效的 Swap 方法是什么样的呢?

让我们说 aT[]和 a List<T>。您将如何最好地实现一种在这两个项目中交换两个项目的方法?