在(a,b)范围内返回具有指数分布的随机双数的函数
我想生成一个从a到b的随机数.问题是,必须通过指数分布给出数字. 这是我的代码: public double getDouble(double low, double high) { double r; (..some stuff..) r = rand.NextDouble(); if (r == 0) r += 0.00001; return (1 / -0.9) * Math.Log(1 - r) * (high - low) + low; } 问题是(1/-0.9) * Math.log(1 -R)不在0到1之间,因此结果不在a和b之间.有人可以帮忙吗?预先感谢! 解决方案 我在第一个答案中错过了您的问题:)您已经在使用反转采样. 要将一个范围映射到另一个范围,是 一种典型的数学方法: f(x)
12 2024-04-21
编程技术问答社区
如何同时发布32位和64位版本的库
我有一个C#库,该库由各种客户端(32位和64位)调用.到目前为止,它已被编译为Anycpu,因此没有问题. 最近,我在32位和64位风味的SQLite .NET库中添加了一个依赖性(但没有Anycpu).因此,现在,我必须有两个构建 - 对于两个位. 过去,我见过其他库(想到MS SQL Compact),该库具有一个方案,其中一个.NET组装将在文件夹中具有Private\amd64和Private\x86文件夹,并具有适当的本机库中他们,它会根据需要称呼每个人. 这种方法对我的情况可行吗?是否有有关如何实施它的文档?是否需要更改代码,或者这是分发技术? 解决方案 有几种方法可以处理.前三种方法需要代码更改(小): a.您可以在应用程序启动期间修改指向平台特定文件夹的路径.然后,.NET将自动从该文件夹加载本地DLL. b.您可以订阅"汇编"事件,然后根据平台选择汇编. 在此 http:http://http://scottbilas.co
12 2024-04-18
编程技术问答社区
C语言中泊松分布的计算
我需要一个C函数来计算poisson分布的k值高达720.我需要一个高效的解决方案. 解决方案 给予尝试其他解决方案 泊松随机发生器 int poissonRandom(double expectedValue) { int n = 0; //counter of iteration double limit; double x; //pseudo random number limit = exp(-expectedValue); x = rand() / INT_MAX; while (x > limit) { n++; x *= rand() / INT_MAX; } return n; } 我想我的紧急需求很晚. 其他解决方案 如果您想自己计算而不是使用库 您可以使用公式进行计算.E^k*e^(-lambda)/k! 您可以使用log(n!)= log(n)+log(n-1!)和动态编程
8 2024-04-08
编程技术问答社区
C语言中的随机整数,与整数运算相比,rand()%N有多糟糕?它有什么缺陷?
编辑: 我的问题是:rand()%N被认为非常糟糕,而整数算术的使用被认为是优越的,但是我看不到两者之间的区别. 人们总是提到: 低位在rand()%N中不是随机的, rand()%N是非常可预测的, 您可以将其用于游戏,但不能用于加密 有人可以在这里解释是否有这些观点以及如何看到? 较低位的非随机性的想法应该使我所显示的两种情况的PE不同,但事实并非如此. 我想许多喜欢我的人总是会避免使用rand()或rand()%N,因为我们总是被教导说它很糟糕.我很想知道有效地使用C rand()%N生成的"错误"随机整数是多么有效.这也是Ryan Reich在如何从范围内生成一个随机整数. 老实说,那里的解释听起来很令人信服.不过,我认为我会尝试一下.因此,我以非常幼稚的方式比较分布.我为不同数量的样本和域运行两个随机发电机.我没有看到计算密度而不是直方图的点,因此我只是计算了直方图,而是通过看,我会说它们看起来都一样均匀.关于提出的另一点,关于实
16 2024-04-06
编程技术问答社区
C/C++中的累积正态分布函数
我想知道,数学库中是否存在统计功能,这些功能是CMATH等标准C ++库的一部分.如果没有,你们可以推荐一个具有累积正态分布功能的好统计库吗? 更具体地说,我正在寻求使用/创建累积分布功能. 解决方案 我在回答我之前回答但随后找到了一个非图书馆的人们的建议,弄清楚了如何使用GSL做到这一点(希望这会帮助许多人像我一样寻找它的人是): #ifndef Pi #define Pi 3.141592653589793238462643 #endif double cnd_manual(double x) { double L, K, w ; /* constants */ double const a1 = 0.31938153, a2 = -0.356563782, a3 = 1.781477937; double const a4 = -1.821255978, a5 = 1.330274429; L = fabs(x); K = 1.
28 2024-04-06
编程技术问答社区
在C/C++中按照正态分布生成随机数
在C或C ++中的正态分布之后,我如何轻松地生成随机数? 我不想使用Boost. 我知道诺斯详细谈论了这一点,但我现在没有他的书. 解决方案 有许多方法用于 generate gerussian distribed "> >. box-muller transform 通常使用.它正确地产生具有正态分布的值.数学很容易.您会生成两个(统一)随机数,并且通过将公式应用于它们,您可以获得两个正常分布的随机数.返回一个,然后将另一个保存在下一个随机号码的请求中. 其他解决方案 C ++ 11 c ++ 11优惠我今天要走的方式. C或以上C ++ 以下是一些解决方案,按照上升的复杂性: 添加从0到1的12个均匀的随机数并减去6.这将匹配正常变量的平均值和标准偏差.一个明显的缺点是该范围限于±6 - 与真正的正态分布不同. Box-Muller变换.这在上面列出,并且相对易于实现.但是,如果您需要非常精确的样品,请注意,盒子变换与某
26 2024-04-05
编程技术问答社区
可执行文件用无效的授权签名(iPhone版)。
好吧,我不是这个东西的新秀.我知道我在做什么,所以请不要带我完成基础知识.前几天,我将Xcode更新到了最新版本,现在每个新项目和过去的每个项目都使用其自己的分销证书成功构建了过去的项目,不再成功使用以下错误: 可执行文件签署了无效的权利. 您应用程序代码签名授权文件中指定的权利文件与您的供应配置文件中指定的权利不匹配. (0xe8008016). 这是我所有应用程序发生的!我有六个,所有人都从未在证书上遇到问题,但是现在我遇到了这个错误!我什至没有制作Adhoc的构建,因此我不使用权利,也没有在代码签名授权框中指定.那个盒子是空白的.我尝试了一切,这绝对是带有更新的XCode问题. 请帮助这是非常令人沮丧的. 解决方案 这只是黑暗中的镜头,但是也许尝试从Xcode和所有设备中删除所有配置配置文件,然后从配置门户中再次下载它们,然后将它们重新安装在所有内容上?升级时,我最终还是这样做了. 其他解决方案 在我的情况下,我的目标和项目构建设置中有"代码
14 2024-04-04
编程技术问答社区
使用boost'的skewed_normal_distribution
我是C ++的新手,并提升了. 我想创建一组使用Boost的skewed_normal_distribution类从偏斜分布中得出的数字. 我不确定如何开始.我想定义一个平均0.05,方差为0.95的分布,但偏斜为0.5.以下代码不起作用,我意识到我也需要设置variate_generator. 谁能提供一些指针?我没有在skew_normal_distribution上找到Boost文档页面非常直观,但这可能是因为我的经验不足. 注意我遇到的主要问题是: ‘skew_normal_distribution'不是" boost"的成员 非常感谢 #include #include #include int main () { boost
18 2024-04-02
编程技术问答社区
高效的升压分布使用
(重新提出问题) 我正在创建一个包装类别以提高正态分布,并希望使其尽可能高效. 如果我使用: double x = 0.0; boost::variate_generator > var_nor(rng, nd); for (int i=0; i > var_nor(rng, nd); 并具有执行此操作的示例方法: double x = var_nor(); return x; 但是在这种情况下,我会发现一个
18 2024-04-02
编程技术问答社区
关于使用boost生成正常随机数的问题
当我看到这篇文章.它给出了一个很好的例子,但是我仍然不确定boost::variate_generator > var_nor(rng, nd);中的&是什么意思.如果我不包括此&,它会产生什么影响? 另外,在阅读 解决方案 简短的背景信息 用特定分布生成随机数的一种方法是从间隔[0,1)中生成均匀分布的随机数,然后在这些数字上应用一些数学以将它们塑造成所需的分布.因此,您有两个对象:一个来自[0,1)随机数的发电机,一个分发对象,其中一个发电机 在所需的(例如正常)分布(例如正常)中取出均匀分布的随机数,并吐出随机数. 为什么通过参考传递发电机 代码中的var_nor对象将发电机rnd与正常分布nd伴侣.您必须通过引用传递发电机,即模板参数中的&.这确实是必不可少的,因为随机数发生器具有内部状态,从该状态计算下一个(伪 - )随机数.如果您不通过引用传递发电机,则将创建
14 2024-04-02
编程技术问答社区
Boost。在向量中存储指向分布的指针
嗨,堆栈交换专家, 我正在尝试收集Boost在一个向量中提供的不同统计分布的指针. 如果将分布来自一个(虚拟)父类,我可以写 之类的东西 std::vector v; boost::math::normal_distribution n; boost::math::students_t_distribution t(4); boost::math::normal_distribution *p1 = new boost::math::normal_distribution(n); boost::math::students_t_distribution *p2 = new boost::math::students_t_distribution(t); v.push_back(p1); v.push_back(p2); ,然后在向量上迭代并将函数等应用于脱水的指针.
14 2024-04-02
编程技术问答社区
boost::math::erf的算法
是否有任何细节可用于Boost的ERF功能背后的算法?模块的文档不是很精确.我发现的只是混合了几种方法.对我来说,它看起来像Abramowitz和Stegun的变化. 混合了哪些方法? 方法如何混合? ERF功能的复杂性(恒定时间)是什么? 塞巴斯蒂安 解决方案 接口包含A 策略模板参数可用于控制数值精度(因此其运行时复杂性). #include namespace boost{ namespace math{ template calculated-result-type erf(T z); template calculated-result-type erf(T z, const Policy&); template calculated-result-type erfc(T z);
16 2024-04-02
编程技术问答社区
使用Boost生成基于贝塔分布的随机数
我试图使用Boost使用C ++根据Beta分布生成随机数.我已经在线看到了许多示例,这些示例是根据Random.hpp中的分布生成随机数的(例如谢谢. 解决方案 您首先要从范围(0,1)统一绘制一个随机数.如果有任何分布,您就可以将该数字插入分布的"分数函数"中,结果是从分布中汲取了随机值.来自 一种从任意分布中生成随机数的一般方法,该分布没有跳跃的CDF,是将逆函数使用到CDF:g(y)= f^{ - 1}(y).如果u(1),...,u(n)是来自(0,1)分布的统一的随机数,则g(u(1)),...,g(u(n))是一个随机的来自CDF F(x)的分布的样本. 那么,我们如何获得Beta分布的分位数函数? The documentation for beta.hpp is 在这里.您应该能够使用类似的东西: #include using namespace boost::math; double
24 2024-04-02
编程技术问答社区
分发静态链接的ELF 32bit Binary-它能在所有平台上运行吗?
我的团队准备发布我们的Linux程序的第一个版本,并希望以最简单的方式(对于用户). . 该程序不需要外部文件,不安装,并且是静态链接的. ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.15, not stripped 我的问题是这样的二进制是否会在大多数Linux平台(Ubuntu,Redhat,opensuse等)上运行? 我也有点担心它说" GNU/Linux 2.6.15"的部分,这是否意味着他们需要内核2.6.15或更高? 解决方案 不再建议完整的静态链接程序. 可移植性层从内核调用转移到基本库(请记住pthread desaster以及LinuxThreads nptl threads的问题?). 遵循LSB 4.0标准.信任那里提到的库的存在(不幸的是不是很多),并将所有其他共享库与
28 2024-03-30
编程技术问答社区
确定R中分布的高密度区域
背景: 通常,r给出了众所周知的分布的分位数.在这些分位数中,下至97.5%的下部2.5%覆盖了这些分布下的95%. 问题: 假设我具有F分布(DF1 = 10,DF2 = 90).在R中,我如何确定此分布下的95%的面积,以使该95%仅覆盖高密度面积,而不是R通常给出的95% ? 注意:很明显,最高密度是"模式"(下图中的虚线).所以我想,必须从"模式"移到尾巴. 这是我的R代码: curve(df(x, 10, 90), 0, 3, ylab = 'Density', xlab = 'F value', lwd = 3) Mode = ( (10 - 2) / 10 ) * ( 90 / (90 + 2) ) abline(v = Mode, lty = 2) CI = qf( c(.025, .975), 10, 90) arrows(CI[1], .05, CI[2], .05, code = 3, angle = 90, length
38 2024-03-29
编程技术问答社区
ASP.NET Web应用程序分发
分发ASP.NET Web应用程序的最简单方法是什么?我试图查看一些开源的ASP.NET项目,以查看它们如何分发应用程序以及如何进行更新,并且对我来说似乎很复杂(不是让我自己,而是对于非技术用户).他们中的许多都需要备份整个已安装的项目,删除特定的文件夹并保存其Web.config的一部分.我希望找到一种解决方案,以使更新过程变得尽可能简单. 谢谢. 解决方案 我正在从事一个具有类似要求的项目.我们决定使用还有很多其他开源和付费安装程序技术. 这是一篇文章,其中有一些信息. 其他解决方案 CommunityServer提供了一个设置MSI,该设置将创建一个ViveRutal目录,生成SQL数据库并使用默认数据填充它.更新点发布仍然是一个涉及更新的手动过程.SQL文件并让所有人下载然后合并二进制和静态文件更改. 他们也可能也可以创建一个更新的MSI,但是由于有很多人自定义社区服务器,所以最好让人们合并自己的变化. 其他解决方案 您的意思是将功能分解为可以在单
8 2024-03-09
编程技术问答社区
找出AD中的一个组是否在分布组中?
我正在使用c#的ASP.NET,对Active Directory几乎没有任何想法.我被赋予了以下步骤编写程序的任务: ASP.NET应用程序提供了用户的用户名. 应用程序应使用给定的用户名查询所有用户的组. 然后,应用程序应将这些组显示在两个单独的列表中,其中一个由分布组和其他列表组成,即其他组. 现在,所有组的查询都很容易.但是如何检查该组是否在分销组中? 我没有得到更多信息. 任何属性或我可以检查的东西? 解决方案 您可以从称为 groupe-type (最后一行). (0x00000001) : Specifies a group that is created by the system. (0x00000002) : Specifies a group with global scope. (0x00000004) : Specifies a group with domain local scope. (0x00000008
22 2024-03-09
编程技术问答社区
将数据点绘制在分布中的位置上
可以说,我有一个很大的数据集,可以在某种形式的分析中对其进行操作.可以在概率分布中查看值. 现在我有了这个大数据集,我想将已知的实际数据比较.主要是,我的数据集中有多少值具有与已知数据相同的值或属性.例如: 这是一个累积分布.连续线来自模拟生成的数据,而强度降低只是预测百分比.然后,恒星观察(已知)数据,绘制针对生成的数据. 我做的另一个示例是在视觉上可能会在直方图上投射这些点: 我很难标记已知数据点位于生成的数据集中,并在生成数据的分布的一边累积地绘制其绘制. 如果我要尝试检索生成数据附近的点数 def SameValue(SimData, DefData, uncert): numb = [(DefData-uncert)
18 2024-03-07
编程技术问答社区
计算数组中过零次数的Python代码
我希望计算阵列变化极性中值的次数(编辑:数组交叉零中的值的次数). 假设我有一个数组: [80.6 120.8 -115.6 -76.1 131.3 105.1 138.4 -81.3 -95.3 89.2 -154.1 121.4 -85.1 96.8 68.2]` 我希望计数为8. 一种解决方案是运行一个循环并检查大于或小于0,并保留先前极性的历史. 我们可以更快地做吗? 编辑:我的目的实际上是要更快地找到一些东西,因为我的这些长度的阵列约为6854308,我必须对100个此类阵列进行这些计算. 解决方案 这会产生相同的结果: import numpy as np my_array = np.array([80.6, 120.8, -115.6, -76.1, 131.3, 105.1, 138.4, -81.3, -95.3, 89.2, -154.1, 121
12 2024-03-05
编程技术问答社区
查找numpy数组中的局部最大值
我希望在我拥有的一些高斯平滑数据中找到峰值.我已经查看了一些可用的峰值检测方法,但是它们需要一个要搜索的输入范围,我希望这比这更自动.这些方法还针对非平滑数据设计.由于我的数据已经平滑,因此我需要一种更简单的方法来检索峰值.我的原始数据和平滑的数据在下面的图中. 本质上,是否有一种pythonic方法可以从一系列平滑数据中检索最大值,以便像 这样 a = [1,2,3,4,5,4,3,2,1,2,3,2,1,2,3,4,5,6,5,4,3,2,1] 将返回: r = [5,3,6] 解决方案 存在一个bulit-in函数import numpy as np from scipy.signal import argrelextrema a = np.array([1,2,3,4,5,4,3,2,1,2,3,2,1,2,3,4,5,6,5,4,3,2,1]) # determine the indices of the local maxima ma
8 2024-03-04
编程技术问答社区