对数正态分布的随机数产生 C语言实现

zz/2024/4/13 13:46:06

对数正态分布的概率密度函数为

f(x)=\left\{\begin{matrix} \frac{1}{x \sqrt{2\pi} \sigma}exp(-\frac{(lnx - \mu)^2}{2\sigma ^2}) & x>0\\ 0 & x \leq0 \end{matrix}\right.

对数正态分布均值为e^{\mu + \sigma^2/2},方差为(e^{\sigma^2} -1)e^{2\mu + \sigma^2}

首先产生正态分布的随机变量 y ,然后通过变换x=e^y产生对数正态分布的随机变量 x 。具体方法如下:
(1)产生正态分布的随机数 y ,即 y\sim N(\mu, \sigma)
(2)计算x=e^y

 1、lognorm.h

#pragma once
#ifndef LOGNORM_H_
#define LOGNORM_H_/*
函数功能:	产生对数的随机数
输入参数说明:
u			对数正太分布的参数
sigma		对数正太分布的参数
seed	    长整型指针变量, *seed 为伪随机数的种子
*/double lognorm_data(double u, double sigma, long int * seed);#endif // !LOGNORM_H_

2、lognrm.c 文件

#include "lognorm.h"#include <stdint.h>
#include "string.h"
#include "stdio.h"
#include <math.h>
#include "guass.h"/*
函数功能:	产生对数的随机数
输入参数说明:
u			对数正太分布的参数
sigma		对数正太分布的参数
seed	    长整型指针变量, *seed 为伪随机数的种子
*/double lognorm_data(double u, double sigma, long int * seed)
{double x, y;y = guass_data(u, sigma, seed);x = exp(y);return x;
}

高斯分布随机数的产生有关代码见以下链接

产生正态分布(高斯分布)随机数 C语言实现_jk99528878769的博客-CSDN博客C语言实现 产生正态分布(高斯分布)随机数https://blog.csdn.net/jk99528878769/article/details/124457234?spm=1001.2014.3001.5501

3、main.c

#include <stdio.h>
#include <string.h>
#include "lognorm.h"int main()
{// 产生50个对数正太分布的随机数int i, j;long int s;double u, x, sigma;u = 0.0; sigma = 0.5;  s = 13579;for (i = 0; i < 10; i++){for (j = 0; j < 5; j++){x = lognorm_data(u, sigma,  &s);printf("%13.7f",x);}printf("\n");}	getchar();		// 此行代码是为了保持输出窗口,按任意按键关闭弹窗return 0;
}

4、运行输出结果

 


http://www.ngui.cc/zz/1995947.html

相关文章

python对数正态分布函数_将对数正态分布的拟合PDF缩放到python中的histrogram

您要求的是预期直方图的图表 .假设[a&#xff0c;b]是直方图的x个区间之一 . 对于大小为n的随机样本&#xff0c;间隔中的预期样本数为(cdf(b) - cdf(a))*n其中cdf(x)是累积分布函数 . 要绘制预期的直方图&#xff0c;您将计算每个bin的值 .下面的脚本显示了在matplotlib直方图…

R语言对数正态分布

对数正态分布&#xff08;logarithmic normal distribution&#xff09;是指一个随机变量的对数服从正态分布&#xff0c;则该随机变量服从对数正态分布。对数正态分布从短期来看&#xff0c;与正态分布非常接近。但长期来看&#xff0c;对数正态分布向上分布的数值更多一些。 …

deepl翻译器中文版

使用教程&#xff1a; 1、将下载好的压缩包解压后根据提示安装好软件 2、安装完成之后&#xff0c;如图所示&#xff0c;点击Got it进入软件 3、在软件内输入你想要翻译的内容 4、可看到软件支持多种语言进行翻译&#xff0c;满足用户不同使用需求 5、在这里&#xff0c;用户…

DeepL Pro(deepl翻译器)官方中文版V2.2.0 | 翻译软件哪个好用 | 翻译软件排行榜前十的神器

deepl翻译器&#xff08;deepl translator&#xff09;是来自德国的一款机器出色的以DeepL公司世界领先的神经网络技术为动力&#xff0c;来实现卓越的语言翻译效果的专业翻译软件&#xff0c;DeepL Pro目前支持包括英语、德语、法语、西班牙语、葡萄牙语、意大利语、荷兰语、波…

php 怎样清除浏览器痕迹,如何清除电脑使用痕迹?上网痕迹清理的方法介绍

当我们上网的时候&#xff0c;会使用电子信箱&#xff0c;会登录很多论坛类网站&#xff0c;这样就会留下账号&#xff1b;可能会访问一些网站&#xff0c;这样会留下上网信息&#xff1b;可能会登录一些电子商务网站&#xff0c;那账号和密码则会默认保存在系统之中&#xff0…

windows清理_Windows入侵痕迹清理技巧方法总结

为避免入侵行为被发现&#xff0c;攻击者总是会通过各种方式来隐藏自己&#xff0c;比如&#xff1a;隐藏自己的真实IP、清除系统日志、删除上传的工具、隐藏后门文件、擦除入侵过程中所产生的痕迹等。01、Windows日志清除windows 日志路径&#xff1a;系统日志&#xff1a;%Sy…

mysql清除数据痕迹_MySQL使用痕迹清理~/.mysql_history-阿里云开发者社区

mysql会给出我们最近执行的SQL命令和脚本&#xff1b;同linux command保存在~/.bash_history一样&#xff0c;你用mysql连接MySQL server的所有操作也会被记录到~/.mysql_history文件中&#xff0c;这样就会有很大的安全风险了&#xff0c;如添加MySQL用户的sql也同样会被明文记…

计算机使用痕迹,彻底清除电脑使用痕迹的方法

当我们的电脑使用一段时间之后&#xff0c;系统会以各式各样的方式留下种种使用痕迹&#xff0c;很多朋友或许只知道清除浏览器中的记录&#xff0c;其实电脑还会在很多文件夹和文档中留下我们的使用记录&#xff0c;小编这里为大家带来的就是关于如何彻底清除电脑使用痕迹的方…

权限提升+权限维持+痕迹清理

windows提权 IIS-USER—>administrator 本地提权 AT提权——win7 at 17:27 /interactive cmd.exe SC提权——win7和win2008、win2003 #sc 创建 服务名称 程序路径空格"执行命令" 类型空格own sc Create syscmd binPath "cmd /K start" type own typ…

Windows入侵痕迹清理

Windows入侵痕迹清理 环境&#xff1a;Win10、Win7、Winxp虚拟机等 Windows日志 包括五个类别&#xff1a;应用程序、安全、Setup、系统、转发事件 查看方式 1、此电脑-右键管理-Windows日志 2、powershell&#xff08;管理员权限&#xff09; 查看所有日志&#xff1a;Get…