问题标签 [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.
c++ - std::uniform_real_distribution 重新生成相同的随机数
在运行下面的代码时,前半部分arr
等于后半部分。为什么?我什至尝试了各种种子,例如std::chrono::system_clock::now().time_since_epoch().count()
。谢谢。
random - 样本较少的均匀随机
我正在开发一个游戏 AI,并使用一些随机数来使决策更加随机。我在用cocos2d::random()
我对当前random()
函数的实验表明,如果我选择 10K 个样本,我会得到想要的结果。然而,在游戏中,不太可能选择这样的样本,这使得随机函数表现得不均匀。
所以,我的问题是是否有办法用更少的样本来提高随机函数的均匀性。
这是我如何使用该random()
功能进行拍摄决策的示例:
randomInt()
功能基于cocos2d::random()
:
c++ - Oracle 数据库中的 urand
我正在使用 Oracle 数据库 12c。有没有办法像我们在 C++ (urand()) 中那样生成均匀分布的浮点数?
或任何可以这样做的子程序。DBMS_RANDOM 包具有正态分布但不具有均匀分布的功能
r - 使用 Kolmogorov Smirnov 检验的 Pi 分布数字
我想使用 Kolmogorov Smirnov 测试在 R 中执行以下测试:
1) pi 小数点后 4000 位各种整数的出现次数如下:
检验各种整数的出现遵循均匀分布的原假设,就好像 pi 是一个随机数一样。
试图:
我得到了累积概率密度函数并将其设置为x。
这输出:
但是,手动操作会给出 D=.008。我做错了什么?
手算:
假设均匀性,我们将有以下 cdf:
然后我找到了这些值与我上面定义的 x 之间差异的绝对值,以获得 0.008 的最大差异。
c++ - 提升离散均匀分布
我有各种各样的分布,我从中抽取样本,pdf 和 cdf。出于多态的原因,我使用的是 uniform_distribution 而不是 uniform_int_distribution。
下面返回一个 10 到 20 之间的浮点值,而不是整数值:
该政策是否正在实施?
c++ - uniform_real_distribution所有可能的值生成
我目前正在研究重要性抽样,出于测试目的,我需要能够生成可能uniform_real_distribution<float>
为区间 [0,1] 生成的所有可能值(是的,它也从右侧关闭)。我的想法是生成整数,然后我可以将其转换为浮点数。从我所做的测试来看,[0,1] 中的统一单精度浮点数和 [0,2^24] 中的整数之间似乎存在完美的双射(我对它不是 [0 ,2^24-1] 并且我仍在试图找出原因,我最好的猜测是 0 对于浮点数来说只是特殊的,而 1 到 2^24 都会导致具有相同指数的浮点数)。我的问题是,以这种方式生成的浮点数是否正是可以从uniform_real_distribution<float>
. 你可以在下面找到我的整数 <-> 浮点测试:
编辑:
有点相关:
http://xoroshiro.di.unimi.it/random_real.c
https://lemire.me/blog/2017/02/28/how-many-floating-point-numbers-are-in-the-interval-01/
编辑2:
我终于设法弄清楚uniform_real_distribution<float>
至少在mt19937
与默认模板参数一起使用时与引擎一起使用时会发生什么(我正在谈论 VS2017 附带的实现)。可悲的是,它只是在 [0,2^32-1] 中生成一个随机整数,然后将其转换为浮点数,然后除以 2^32。不用说,这会产生非均匀分布的浮点数。然而,我猜测这适用于大多数实际目的,除非一个工作接近生成数字之间的增量的精度。
r - runif 以 .Machine$double.xmax 作为边界
我想生成一个随机的实数(我猜是有理数)。
为此,我想使用runif(1, min = m, max = M)
并且我的想法是设置m; M
(绝对)尽可能大,以使间隔尽可能大。这让我想到了我的问题:
为什么它不返回一个数字?选择的间隔是否太大?
附言
distribution - 使用逆累积分布生成 Pareto 观测值
我目前正在处理一项任务,您必须使用帕累托分布的逆累积函数生成帕累托观察值。我以前从未设法真正反转统计函数,而且我似乎无法正确地做到这一点。我理解公式 X=F^1(U),其中 X 是帕累托分布随机变量,U 是标准均匀随机变量,对于生成观察很重要,但我不知道如何计算反函数。
我希望对如何解决这个问题有一些见解。
algorithm - 在矩形区域内均匀生成一个随机点(某些矩形可能重叠)
假设给定一组具有不同区域的矩形,并且一些矩形可能重叠。目标是在矩形区域之间生成一个均匀的随机点。
矩形被定义为一对两点:
- (x1,y1) - 最左下角;
- (x2,y2) - 右上角。
我在不重叠的矩形中均匀分布随机点的策略是,- 根据区域随机选择一个矩形(现有解决方案):
然后在一个矩形内生成一个任意点:
- x1 +(1/(x2-x1))*rand(0,(x2-x1-1)),
- y1 +(1/(y2-y1))*rand(0,(y2-y1-1))。
但是如果一些矩形可以重叠怎么办?
java - 用总和 `s` 均匀划分 `n` 双精度,其中每个双精度均小于 1(具有适当的性能)
我目前正在处理这个(代码高尔夫)挑战,我很难结合给定整数数量n
和十进制总和的四个要求s
(考虑到我们应该支持的范围:1 <= n <= 10
和0 <= s <= n
):
- 项目
n
都应该是随机的,并且是均匀划分的 - 所有项目的总和必须等于
s
- 所有项目均不得高于 1.0
- 代码必须在每 1 秒内运行
n <= 10
,无论s
基于这个 Stackoverflow 答案,我知道如何在给定范围内统一划分项目。例如,使用,我可以在 range 中n=5, s=4.5
创建一个项目列表,并带有一个额外的前导和尾随。然后我可以计算所有差异(因此所有差异的总和将等于)。这是一个可能的实现:n-1 = 4
[0, 1.5]
0
1.5
s=4.5
示例输出:
以上符合上述四个要求中的三个(1、2 和 4)。但是,不是3。
我可以在它周围环绕一个循环,只要result
-array 中的一项仍然大于 1,它就会继续:
这对大多数人来说仍然相对较快,n
并且s
:
在线尝试(打印被删除/移动以不溢出控制台)
但是,最后四个//
禁用的测试用例,预期随机值的平均值接近1
,耗时太长(甚至在 TIO 上 60 秒后超时)。
所以这就是我的问题主要涉及的地方。如何像我一样统一划分值,并记住[0, 1]
每个值的范围,并有良好的表现?在顶部的链接代码高尔夫挑战中,我看到了其他编程语言(如 Python 或 JavaScript)的一些工作示例,但是将更长的代码高尔夫挑战从一种编程语言移植到另一种编程语言通常不是很简单。