随机数生成、抽样及统计显著性分析
立即解锁
发布时间: 2025-08-19 01:19:35 阅读量: 24 订阅数: 48 AIGC 


Java平台上的数值计算与数据分析
# 随机数生成、抽样及统计显著性分析
## 1. 随机数生成
### 1.1 随机数种子设置
可以使用构造函数的整数参数 `seed` 重新设置随机数种子,该整数值会将生成器的种子设置为当前计算机时间(以毫秒为单位)。也可以使用 `reSeed(i)` 方法,用提供的种子重新设置随机数生成器,其中 `i` 是任意整数。
### 1.2 随机分布卷积
可以在返回随机值的同一方法中定义随机数的特征,这在卷积多个随机分布并创建新的随机分布时非常有用。例如,将泊松分布与伽马分布进行卷积:
```python
from org.apache.commons.math3.random import *
from jhplot import *
r = RandomDataGenerator()
c1 = HPlot()
c1.visible()
c1.setRangeX(0, 100)
h1 = H1D("Gamma x Poisson", 100, 0, 100)
tot = 1000000 # total events
shape = 10
scale = 3.0 # parameters of Gamma distribution
r = RandomDataGenerator()
for i in range(tot):
mean = r.nextGamma(shape, scale)
value = r.nextPoisson(mean)
h1.fill(value)
c1.draw(h1)
```
此代码展示了泊松分布的均值如何使用具有固定参数的伽马分布进行随机分布,结果的直方图可以直观展示分布情况。
### 1.3 安全随机数方法
还有所谓的“安全”方法,比上述方法慢得多。安全随机序列具有额外的属性,即知道序列中任意点之前生成的值并不能更容易地预测后续值。这种值对于加密安全的随机序列很有用。例如,`nextSecureHexString(10)` 方法可以生成一个长度为 10 的“安全”随机字符串。
## 2. 随机抽样
### 2.1 填充 P0D 容器
可以使用以下代码将随机数填充到 P0D 容器中:
```python
from jhplot import *
p0 = P0D()
p0.randomUniform(1000, 0.0, 1.0) # Uniform distribution
p0.randomNormal(1000, 0.0, 1.0) # Gaussian distribution
```
上述代码分别使用均匀随机生成器(范围为 [0 - 1])和均值为 0、标准差为 1 的高斯生成器填充了一个包含 1000 个数字的数组。
### 2.2 1D 数组随机数生成方法
`jhplot.math` 包的静态方法可用于生成随机数数组。以下是一些常用方法:
| 方法 | 描述 |
| ---- | ---- |
| `randomInt(N, min, max)` | 生成 `N` 个在 `min` 和 `max` 之间均匀分布的随机整数 |
| `randUniform(N, min, max)` | 生成 `N` 个在 `min` 和 `max` 之间均匀分布的随机数 |
| `randomDirac(N, d[], p[])` | 从离散随机变量生成随机数组,其中 `d[]` 是离散值数组,`p[]` 是每个值的概率 |
| `randomNormal(N, m, s)` | 生成均值为 `m`、标准差为 `s` 的高斯(或正态)随机数数组 |
| `randomChi2(N, i)` | 生成具有 `i` 个自由度的 $\xi^2$ 随机数数组 |
| `randomLogNormal(N, m, s)` | 生成对数正态随机数数组 |
| `randomExponential(N, lam)` | 生成指数随机数数组(均值 = 1/`lam`,方差 = 1 / `lam^2`) |
| `randomTriangular(N, m1, m2)` | 生成在范围 `[m1, m2]` 内的对称三角随机变量数组 |
| `randomTriangular(N, m1, m, m2)` | 生成在范围 `[m1, m2]` 内的非对称三角随机分布数组(`m` 表示具有最大密度的随机变量值) |
| `randomBeta(N, a, b)` | 生成具有 Beta 分布的数组,`a` 和 `b` 是 Beta 随机变量的第一和第二个参数 |
| `randomCauchy(N, m, s)` | 生成柯西随机分布数组(均值 = Inf,方差 = Inf),`m` 是韦布尔随机变量的中位数,`s` 是柯西随机变量的第二个参数 |
| `randomWeibull(N, lam, c)` | 生成具有韦布尔随机变量的数组,`lam` 是韦布尔随机变量的第一个参数,`c` 是第二个参数 |
生成随机数序列后,可以按以下步骤验证:
1. 将随机数组转换为 P0D 对象。
2. 使用 `getStat()` 方法显示累积统计信息,或将其转换为 H1D 直方图进行可视化。
以下是一个生成对数正态分布数组、打印统计信息并以 H1D 直方图形式绘制的示例:
```python
from jhplot import *
from jhplot.math.StatisticSample import *
a = randomLogNormal(1000, 0, 10)
p0 =
```
0
0
复制全文
相关推荐









