- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
它是只保证随机子集,还是随机顺序?
用例是使用 ('a'..'z').to_a.sample(8).join
生成一个 secret 字符串。我想知道我是否可以相信所有 26⋅25⋅24⋅23⋅22⋅21⋅20⋅19 种可能的结果都是同样可能的。
Choose [...] n random elements from the array.
The elements are chosen by using random and unique indices into the array in order to ensure that an element doesn't repeat itself unless the array already contained duplicate elements.
我看到三种可能的解释。例如对于 [1, 2, 3].sample(2)
:
[1, 2]
, [1, 3]
, [2, 1]
, [2, 3] ]
、[3, 1]
或 [3, 2]
,每个概率为 1/6。当您选择一个随机元素作为第一个输出元素,然后选择另一个随机元素(从其余元素中)作为第二个输出元素时,您会得到这样的结果。[1, 2]
、[1, 3]
或[2, 3]
,每个概率为1/3。这是您通过选择索引的一个子集然后遍历数组并收集元素(如果它们的索引在所选元素中)而得到的结果。[1, 2]
或 [1, 3]
,每个概率为 1/3,或 [2, 3]
或[3, 2]
,每个概率为 1/6。我测试了它,第一个解释是发生了什么。查看源代码,我也觉得它通常就是这样做的。但我担心我忽略了一些东西,或者这只是当前实现的副作用,并且它可能在未来发生变化(或者在某些 Ruby 实现中已经有所不同)。我可以想象第二种解释/实现是有益的,要么是因为人们想要这样的“稳定”采样,要么是出于效率原因。
我的第一个解释是它应该做什么吗?我可以依赖结果不仅是随机子集而且具有随机顺序吗?文档不应该对此更清楚吗?
这是我的测试代码和统计数据,以防你想自己尝试:
array = (1..3).to_a
n = 2
count = Hash.new(0)
(10**6).times do
count[array.sample(n)] += 1
end
puts "#{count.size} different samples occurred."
puts "Smallest was #{count.keys.min}, largest was #{count.keys.max}."
puts "Frequencies ranged from #{count.values.min} to #{count.values.max}."
例如输出:
6 different samples occurred.
Smallest was [1, 2], largest was [3, 2].
Frequencies ranged from 165698 to 167234.
编辑:我创建了一个 Ruby issue .
最佳答案
我希望该方法的名称源自 samples are drawn without replacement 的方式在统计中。在这种情况下,被抽样的总体元素不一定是有序的,如果它们是有序的,则与抽样的方式无关。
解释无放回抽样的通常方法是从容器中随机抽取一定数量的球,抽取的每个球在抽取下一个球之前放在一边。球可以通过颜色或数字或其他方式来识别,但采样的结果并不反射(reflect)任何排序的概念。
请记住,方法sample
是在类Array
上定义的,但数组的元素不一定是有序的。例如,
[1, "1", :one, 1..2, { a: 1 }].sample(2) # => [{:a=>1}, :one]
显然,这个样本的元素是无法排序的。
可以想象,sample
可以构造成在样本元素具有可比性的情况下对其进行排序,但我想不出另一种 Ruby 方法具有这种行为。此外,实现起来会有问题。很容易确定 [1,2,3,4]
的元素是可比较的(使用 Integer#<=> ),但并不总是那么简单。例如,假设数组是
[1, 2.5, 3/2r, BigDecimal.new("2.1")]
这些元素实际上是可比较的([1, (3/2), 0.21e1, 2.5]
已排序),但 Ruby 必须做一些工作才能做出决定。我想如果元素不可比较,Ruby 可以尝试对样本进行排序并挽救异常,但这似乎有些牵强。
关于ruby - Array#sample 是否保证随机顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47600931/
我让随机数低于之前的随机数。 if Airplane==1: while icounter0: print "You have enoph fuel to get to New
是否可以生成 BigFloat 的随机数?类型均匀分布在区间 [0,1)? 我的意思是,因为 rand(BigFloat)不可用,看来我们必须使用 BigFloat(rand())为了那个结局。然而,
我正在尝试学习 Kotlin,所以我正在学习互联网上的教程,其中讲师编写了一个与他们配合良好的代码,但它给我带来了错误。 这是错误 Error:(26, 17) Kotlin: Cannot crea
是否有任何方法可以模拟 Collections.shuffle 的行为,而不使比较器容易受到排序算法实现的影响,从而保证结果的安全? 我的意思是不违反类似的契约(Contract)等.. 最佳答案 在
我正在创建一个游戏,目前必须处理一些math.random问题。 我的Lua能力不是那么强,你觉得怎么样 您能制定一个使用 math.random 和给定百分比的算法吗? 我的意思是这样的函数: fu
我想以某种方式让按钮在按下按钮时随机改变位置。我有一个想法如何解决这个问题,其中一个我在下面突出显示,但我已经认为这不是我需要的。 import javafx.application.Applicat
对于我的 Java 类(class),我应该制作一个随机猜数字游戏。我一直陷入过去几天创建的循环中。程序的输出总是无限循环,我不明白为什么。非常感谢任何帮助。 /* This program wi
我已经查看了涉及该主题的一些其他问题,但我没有在任何地方看到这个特定问题。我有一个点击 Web 元素的测试。我尝试通过 ID 和 XPath 引用它,并使用 wait.until() 等待它变得可见。
我在具有自定义类的字典和列表中遇到了该异常。示例: List dsa = (List)Session["Display"]; 当我使用 Session 时,转换工作了 10-20 次..然后它开始抛
需要帮助以了解如何执行以下操作: 每隔 2 秒,这两个数字将生成包含从 1 到 3 的整数值的随机数。 按下“匹配”按钮后,如果两个数字相同,则绿色标签上的数字增加 1。 按下“匹配”按钮后,如果两个
void getS(char *fileName){ FILE *src; if((src = fopen(fileName, "r")) == NULL){ prin
如果我有 2 个具有以下字段的 MySQL 数据库... RequestDB: - Username - Category DisplayDB: - Username - Category
我有以下语句 select random() * 999 + 111 from generate_series(1,10) 结果是: 690,046183290426 983,732229881454
我有一个使用 3x4 CSS 网格构建的简单网站。但出于某种原因,当我在 chrome“检查”中检查页面时,有一个奇怪的空白 显然不在我的代码中的标签。 它会导致网站上出现额外的一行,从而导致出现
我有两个动画,一个是“过渡”,它在悬停时缩小图像,另一个是 animation2,其中图像的不透明度以周期性间隔重复变化。 我有 animation2 在图像上进行,当我将鼠标悬停在它上面时,anim
如图所示post在 C++ 中有几种生成随机 float 的方法。但是我不完全理解答案的第三个选项: float r3 = LO + static_cast (rand()) /( static_c
我正在尝试将类添加到具有相同类的三个 div,但我不希望任何被添加的类重复。 我有一个脚本可以将一个类添加到同时显示的 1、2 或 3 个 div。期望的效果是将图像显示为背景图像,并且在我的样式表中
我有一个基本上可以工作的程序,它创建由用户设置的大小的嵌套列表,并根据用户输入重复。 但是,我希望各个集合仅包含唯一值,目前这是我的输出。 > python3 testv.py Size of you
我正在尝试基于 C# 中的种子生成一个数字。唯一的问题是种子太大而不能成为 int32。有什么方法可以像种子一样使用 long 吗? 是的,种子必须很长。 最佳答案 这是我移植的 Java.Util.
我写这个函数是为了得到一个介于 0 .. 1 之间的伪随机 float : float randomFloat() { float r = (float)rand()/(float)RAN
我是一名优秀的程序员,十分优秀!