R语言:作业六(逆变换法生成随机变量;线性同余发生器LCG的编写)

news/2024/10/19 4:21:59/

1.

用逆变换法编写产生下述随机变量的程序:
X 0 1
p 0.4 0.6
模拟10000次,并确定随机变量的值0的比例。

f <- function(n){{x <- rep(0,n)for (i in 1:n){u <- runif(1)if(u < 0.6) x[i] <- 1else x[i] <- 0}x}
}
test <- f(10000)
table(test)

test
0 1
4087 5913

a <- 0
for(i in 1:10000){if(test[i] == 0){a = a + 1}
}
a / 10000

[1] 0.4037

2.

用逆变换法方法生成如下概率函数的随机变量,要求写出R程序:
X 1 2 3 4 5
p 0.1 0.2 0.4 0.2 0.1

f <- function(n){{x <- rep(0,n)for (i in 1:n){u <- runif(1)if(u < 0.1) x[i] <- 1else if(u < 0.1 + 0.2) x[i] <- 2else if(u < 0.1 + 0.2 + 0.4) x[i] <- 3else if(u < 0.1 + 0.2 + 0.4 + 0.2) x[i] <- 4else x[i] <- 5}x}
}

可以测试一下:

test <- f(10000)
table(test)

test
1 2 3 4 5
1044 1980 3955 2015 1006

3.

设线性同余发生器LCG中,取M= 16,a = 5,c= 3,x0= 7.试写出一个周期{xi}的值;并问x500= ?

LCG 算法数学上基于公式:X(n + 1) = (a * X(n) + c) % m
其中, 各系数为:
模m, m > 0
系数a, 0 < a < m
增量c, 0 <= c < m
原始值(种子) 0 <= X(0) < m
其中参数c, m, a比较敏感, 或者说直接影响了伪随机数产生的质量.

据此,非常容易写出以下代码:

m <- 16
a <- 5
c <- 3
f <- function(n){{x <- rep(0,n)x[1] <- 7for (i in 1:n){x[i+1] <- (a * x[i] + c) %% m}x}
}
test <- f(500);test

测试得:

[1] 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15
[26] 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6
[51] 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9
[76] 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8
[101] 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3
[126] 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10
[151] 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13
[176] 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12
[201] 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7
[226] 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14
[251] 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1
[276] 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0
[301] 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11
[326] 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2
[351] 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5
[376] 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4
[401] 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15
[426] 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6
[451] 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9
[476] 0 3 2 13 4 7 6 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 8
[501] 11

由于x0=7,计算机从0开始计算,而r语言结果从1开始计算。所以x500在第501个。
即:

test[501]

[1] 11


http://www.ppmy.cn/news/187292.html

相关文章

SAML入门

SAML (Security Assertion Markup Language)入门 提到SAML (Security Assertion Markup Language), 很多人都会联想到单点登录SSO。那么Saml到底是什么&#xff0c;它跟sso到底有什么联系&#xff1f;这里给大家分享一下我在读完了saml差不多全部规范之后的一些心得。希望给sa…

深入浅出单点登录---3、基于SAML实现的统一认证

概述 SAML 2.0 用来在安全域中交换身份验证&#xff08;Authentication&#xff09;数据和 授权&#xff08;Authorization&#xff09;数据。SAML 2.0基于 XML协议&#xff0c;使用包含断言&#xff08;Assertions&#xff09;的安全令牌在SAML授权方&#xff08;即身份提供者…

神基X500笔记本系统故障无法启动怎么重装系统?

神基X500笔记本系统故障无法启动怎么重装系统&#xff1f;在使用这款神基X500笔记本的时候&#xff0c;用户遇到了一些系统问题&#xff0c;导致电脑无法正常的开机使用。系统不能启动的时候一般是系统损坏&#xff0c;或者电脑受到攻击。这个情况可以去进行电脑系统的重装&…

计算机组成大题分析(六)

假定计算机的主频为 500MHz &#xff0c;CPI 为4。现有设备A 和 B&#xff0c;其数据传输率分别为2MB/s 和 40MB/s &#xff0c;对应 I/O 接口中各有一个 32 位数据缓冲寄存器。请回答下列问题&#xff0c;要求给出计算过程。 (1) 若设备 A 采用定时查询 I/O 方式&#xff0c;每…

x570 raidxpert2

搞了两个1TB硬盘组raid&#xff0c;AMD x570支持硬件raid, raid0模式&#xff0c;但操作系统下raid驱动只看到了windows的&#xff0c;对于一个也厌烦了windows且工作于嵌入式Linux的人来说&#xff0c;是头疼的事。 虽然linux下有软raid开源程序&#xff08;试过mdadm&#x…

Python 如何生成uuid

UUID Universally Unique Identifier (UUID)&#xff0c;即通用唯一识别码&#xff0c;是一种软件建构的标准。它的目的在于让分布式系统中的所有元素&#xff0c;都能有唯一的辨识信息&#xff0c;而不需要中央控制端做辨识信息的制定。每个人都可以创建与其他人不冲突&#x…

Dell R730服务器inter 500系列网卡与光模块不兼容**

** Dell R730服务器inter 500系列网卡与光模块不兼容** ** 背景* 在业务服务器现场。预装操作系统&#xff0c;刚将Centos7原版镜像安装到服务器时&#xff0c;服务器网卡配置是4个千兆2个万兆&#xff08;Intel X500系列万兆网卡&#xff09;。 现象 服务器预装时无法识别网…

Certificate 超详细解析cer证书(序列号,颁发者,公钥等)

我们一般说的证书就是数字证书&#xff1a;数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证&#xff0c;人们可以在网上用它来识别对方的身份 一般有两种&#xff1a;PFX证书、CER证书 PFX证书&#xff1a; 由Public Key Cryptography Standards #12&#xff…