问题标签 [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.
c# - 使用 IComparer 随机播放
首先,我知道Fisher-Yates shuffle。但是,为了争论,我想允许用户从下拉列表中选择一个排序选项。该列表将包括一个“随机”选项。根据他们的选择结果,我只想用 IComparer 实例替换我的排序。IComparer 会是什么样子?
谷歌提出了大量有缺陷的结果,它们都采用这种形式:
但是,这种实现是有偏见的,在某些情况下甚至会抛出异常。偏差可以用下面的代码来证明:
那么如何实现一个随机IComparer<T>
的来解决这些问题呢?允许要求每次调用都.Sort()
使用单独的 IComparer 实例,因为我看不到任何其他方法可以做到这一点:必须使用其他一些真正随机的值来比较项目,但该值也必须与项目一致在给定的排序操作中。
我在这里有一个开始,但它是匆忙发布的,非常慢,甚至没有返回所有可能的类型(测试表明它至少消除了偏见,如果你不计算缺失的选项)。我不希望像 Fisher-Yates 那样的 O(n) 性能,但我确实想要一些合理的东西(n log n 表示小的 n),我确实希望它能够显示所有可能的类型。不幸的是,该链接是该问题的当前公认答案,因此我希望能够用更好的东西替换它。
如果不出意外,我希望这能吸引所有那些寻找 IComparable 解决方案的谷歌查询——他们最终会在这里而不是在其他地方告诉他们使用不正确的版本。
random - 生成具有 256 个随机位的数字的最佳方法?
生成具有 256 个随机位的数字的最佳方法是什么?
连接随机字节是否有效?
此外,使用不重复的这些数字对一副牌进行排序是否合适?
bit-manipulation - 位旋转重新排序
我需要对 7 位值进行任意重新排序(是的,我知道我应该使用表格)并且想知道是否有任何位黑客可以做到这一点。
例子:
编辑:我在想一些类似的 东西
只是为了踢球,因为我是 AFTK,所以我正在尝试蛮力搜索以下形式的解决方案:
未找到解决方案。
unit-testing - 测试概率函数
我需要一个以随机顺序返回数组的函数。我想确保它是随机的,但我不知道如何编写测试以确保数组确实是随机的。我可以多次运行代码,看看我是否多次得到相同的答案。虽然大型阵列不太可能发生冲突,但小型阵列(例如两个元素)很可能发生冲突。
我应该怎么做?
javascript - 随机化数组中的元素?
我为我的一位艺术家朋友创建了一个网站,她希望布局保持不变,但她也希望将她制作的新画作混合到当前布局中。所以我在主画廊页面上有 12 个缩略图(thumb1 - thumb12)和 18 个图像(img1 - img18)要放置
我想到的方法是创建一个包含所有图像的数组,将其随机化,然后简单地刮掉前 12 个图像并将它们加载到拇指槽中。另一种方法是从数组中随机选择 12 个图像。在第一种情况下,我找不到随机化数组元素的方法。在后一种情况下,我无法思考如何防止图像多次加载,除了使用第二个数组,这似乎非常低效和可怕。
顺便说一句,我正在用 Javascript 完成所有这些工作。
algorithm - 为什么这个简单的洗牌算法会产生有偏差的结果?什么是简单的原因?
似乎这个简单的洗牌算法会产生有偏差的结果:
你可以试试...而不是使用 52,使用 3(假设只使用 3 张卡),然后运行 10,000 次并统计结果,您会发现结果偏向某些模式...
问题是......它会发生的简单解释是什么?
正确的解决方案是使用类似的东西
但问题是......为什么第一种方法,看似也是完全随机的,会使结果有偏差?
更新 1:感谢这里的人们指出它需要 rand($i, 51) 才能正确洗牌。
linux - 如何使用 Red Hat Linux 上的标准工具随机化文件中的行?
如何使用 Red Hat Linux 上的标准工具随机化文件中的行?
我没有shuf
命令,所以我正在寻找完成相同任务的类似perl
或单线的东西。awk
javascript - 使用 JavaScript Array.sort() 方法进行改组是否正确?
我正在用他的 JavaScript 代码帮助某人,我的眼睛被一个看起来像这样的部分所吸引:
我的第一个想法是:嘿,这不可能!但后来我做了一些实验,发现它确实至少似乎提供了很好的随机结果。
然后我做了一些网络搜索,几乎在顶部找到了一篇文章,其中最明显地复制了这段代码。看起来像一个相当受人尊敬的网站和作者......
但我的直觉告诉我,这一定是错的。特别是因为 ECMA 标准没有指定排序算法。我认为不同的排序算法会导致不同的非均匀洗牌。一些排序算法甚至可能无限循环......
但是你怎么看?
作为另一个问题......我现在如何去测量这种洗牌技术的结果有多随机?
更新:我做了一些测量并将结果发布在下面作为答案之一。
python - 打乱对象列表
我有一个对象列表,我想对它们进行洗牌。我以为我可以使用该random.shuffle
方法,但是当列表是对象时,这似乎失败了。是否有洗牌对象的方法或解决此问题的其他方法?
这将失败。
c# - C#中的洗牌
我正在尝试为一个列出一副纸牌内容的项目编写代码,询问该人想要洗牌多少次,然后将它们洗牌。它必须使用一种方法来使用 System.Random 类创建两个随机整数。
这些是我的课:
程序.cs:
甲板.cs:
枚举.cs:
卡片.cs:
请告诉我如何让卡片随机洗牌,然后列出洗好的牌。