问题标签 [uniform-distribution]
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.
python - Numpy 中使用的随机数生成算法
Python Numpy 用来生成随机数的算法是什么?更具体地说,我们调用时使用的算法是什么
是否Linear congruential generator
使用了随机生成技术?当我们输入时会发生什么
为什么像 42 这样的数字更受欢迎np.random.seed
?
mysql - 如何使用sql从一个有经纬度的数据集中得到一个有代表性的均匀分布的子集?
我有一些带有经纬度信息的数据,但大多数数据点在地理上都很密集,不具有代表性。我希望从这些数据集中挑选出一个具有均匀分布的代表性子集。
下面是我的数据示例
查了一些资料,学会了对经纬度分组,然后用皮尔逊卡方检验,但是对sql的使用不熟悉。
我希望得到 sql 代码来得到这样的子集或者更好地使用 sql 来得到均匀分布的方法。
vector - 创建随机均匀向量
给定 gunction float frand()
,生成均匀分布的随机浮点值,范围为 [0.0, 1.0)
如何创建均匀分布的随机 3D 单位向量和 4D 单位四元数?(因此 3D 矢量位于单位球体上,4D - 在单位超球面上,矢量均匀分布在对应的表面之间)
python - 如何通过数据集中python中的加权概率获得均匀分布?
我已经看过这个问题并且我知道numpy.random.choice
,但我的问题略有不同。
鉴于此,我有一个数据集如下:
所以,它是:
我需要按以下要求重新填充Right
andLeft
列
- 和等于
Right
_Left
Number of polyps
Right
和的值Left
来自其当前值的加权概率
例如,对于如下给定的行:
所以,对于这一行,它可能如下所示。这里0.6= 3/(3+2)
和0.4= 2/(3+2)
:
更新此行后将是:
问题是,我必须对数据集中的所有行都这样做,但我不知道该怎么做!
python - random.uniform(0,1) 可以生成 0 或 1 吗?
在文档中,据说有机会uniform(0,1)
生成值0
和1
.
我已经运行了uniform(0, 1)
10000 次,但它从未产生过零。即使在uniform(0, 0.001)
.
可以random.uniform(0,1)
生成0
or1
吗?
python - 如何在 Keras 中为输入数据添加均匀分布的噪声?
我需要在输入数据中添加量化噪声。我经常读到这些噪音被建模为均匀分布的噪音。
我有一个用 Keras 实现的编码/解码网络(输入数据是时间序列原始数据),在 Keras 中实现了一个层,您可以使用它添加高斯噪声(GaussianNoise 层),我可以使用该层来创建均匀噪声吗?
如果没有,我可以使用其他已实现的层吗?
java - 类似于 Java Random Class 的 nextInt(int bound) 的 long 数据类型的方法
对于长数据类型,我需要一个类似于 Java Random Class 的 nextInt(int bound) 的方法。这是我的实现:
其中 rNumber 从调用方法初始化为,
我的问题是,这种实现是否确保在 0(包括)和界限(不包括)之间有一个伪随机、均匀分布的长值?
c++ - boost::random 经常从不同状态的相同种子生成相同的值
问题描述
有时我使用 Mersenne Twister 引擎从均匀分布中得到相同的随机数,即使我正确使用了引擎并对其进行了迭代。我知道引擎的可能状态的数量是有限的,可能生成的值的数量也是有限的,但现在情况并非如此。
使用 boost 的实现,在范围 [0; 上生成 1e6 个均匀分布的随机值;1e7)。这意味着可能的值比所需的随机值数量要多。但是,我经常得到相同的值,有时在这个范围内超过 100 倍。这怎么可能?
代码
提供了一个简单的代码来重现这种情况。在两个平台上我都遇到了同样的问题:
- 带有 boost-random:x64-windows 1.71.0 的 MSVS 2019 和
- g++ (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609 与 libboost-dev 1.58.0.1ubuntu1
问题
代码中是否存在产生相同值的错误?或者它是boost中的一个错误?
对于我的任务,生成具有均匀分布的数字很重要。找到相同的值是最简单的测试之一,但还有更多,我确信我不想对像 Boost 这样的知名库进行质量分析。我不想使用标准库,因为不能保证两个不同的编译器会为相同的种子值提供相同的序列,但这是任务的要求。你能建议什么样的解决方案?
笔记
如果将生成的值与生成的值进行比较,则会看到一种奇怪的行为std::random generates
。来自random::boost
种子 4561565448989 的值的示例是
而标准库生成
也就是说,boost 序列中每一秒生成的值都非常接近标准库实现中的对应值。当 boost-sequence 中的两个值相等时,standard-library-sequence 中的值不相等,而是彼此接近。MSVS 和 g++ 编译器也有相似之处,它们有权对 Mersenne Twister 和发行版有不同的实现。
更新
可怜的种子?
有人提出,可能是种子值差导致了这种现象,因为size_t
只能2^64
生成许多不同的初始状态。更糟糕的是,我们的生命很短暂,可能的时间价值更小。虽然这是真的,但它并不能解释为什么不同的状态会多次生成相同的数字。毕竟,引擎只启动一次,所以我从 64 位子集中选择了一个状态,它是所有可能状态的子集。
如果我多次启动引擎并且我在不同(但不够不同)启动的引擎的序列中发现相同的值,那么糟糕的种子可能是一个原因。
它是分发生成器
如果使用标准的 MT 引擎,但使用 boost 的分布,问题仍然存在。但是如果引擎是boost的引擎并且分配是标准的,那么问题就消失了。问题是,正如彼得指出的那样,统一分布取决于我使用 boost 的平台。
一些统计数据
我对分布进行了一些分析。使用相同的boost::random::mt19937 engine
,但无论是 boost's 还是 std's uniform_real_distribution<double> u(0, 1)
,我生成了值对并研究了它们的差异并绘制了它们的相关积分I ( x ),即两个值比x更接近的概率。为U [0; 1) 是一维域,I ( x ) 以线性函数开始,用于小x值(并且趋于 1)。结果如下图所示。
该图表明来自 boost 实现的分布不仅有偏差,而且只有 4 个可能的距离值,而众所周知
double
s 更密集,std 确实产生了更大的距离值谱。
错误还是不是错误?已删除的答案
一个已被删除的答案建议提高种子值,但到目前为止,事实证明这不是问题的根源。从那以后,我也在boost 的 github上发布了这个问题,但仍然不清楚问题出在哪里。这可能是 boost 中的一个错误,但即使在这种情况下,这个 SO 源也可以帮助其他人识别其分发生成器中的问题。
hash - 如何将输入映射到具有相同输出和均匀分布保证的输出?
我有一组String
可变大小的输入(在我的情况下为 s)N
,我需要将其映射到一组固定大小的输出(在我的情况下为数组的索引)M
。所以,我基本上需要一个类似的功能:
我需要保证两件事:
- 对于任何输入
X
,我必须始终返回相同的输出Y
。例如:每次我将字符串传递"hello"
给我的函数时,返回的值必须始终相同,例如1
. - 返回值的分布必须是均匀的,即对于无限个输入,相同返回值的平均值必须相同。例如,如果我有
M = 4
不同的值要返回,并且我有N = 100
不同的输入,则映射到每个输出的输入数在理想情况下必须等于25
.
我想出了以下代码:
我认为上面的代码保证了第一点(对于相同的输入总是相同的输出),但不一定是第二点(分布的均匀性)。
是否有这样一个功能的快速实现,以便保证两个点?
performance - 指数 vs 均匀 vs 精确平均响应时间
所以我很难回答这个问题。它询问我应该选择什么,这会给我最快的平均响应时间。
所以选项 1 我有指数分布,服务率为每分钟 2 次。这给了我 0.5m = 30s 的服务时间。
选项 2,我在 10 到 50 秒之间有均匀分布,所以这给了我 10 到 50 秒之间的均匀时间,所以平均值是 30 秒的中位数。
选项 3,我有 50% 的概率得到 10 秒的准确响应时间或 50% 的概率我得到 50 秒的准确响应时间。因此,如果我进行以下计算: (0.5)(10/60) + (0.5)(50/60) 我得到 0.5m 或 30s。
所有这些选项都给了我相同的平均响应时间,所以我不确定在这里选择什么。