(一)连续随机数的生成-从混合高斯分布中采样

这篇具有很好参考价值的文章主要介绍了(一)连续随机数的生成-从混合高斯分布中采样。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 从混合高斯分布中采样

Example 1: Mixture of Gaussian distribution

Let X 1 ∼ N ( μ 1 , σ 1 2 ) , X 2 ∼ N ( μ 2 , σ 2 2 ) X_1 \sim N\left(\mu_1, \sigma_1^2\right), X_2 \sim N\left(\mu_2, \sigma_2^2\right) X1N(μ1,σ12),X2N(μ2,σ22) with σ 1 > 0 \sigma_1>0 σ1>0 and σ 2 > 0 \sigma_2>0 σ2>0, and let X 1 X_1 X1 and X 2 X_2 X2 be independent. Let Θ ∼ Ber ⁡ ( p ) \Theta \sim \operatorname{Ber}(p) ΘBer(p) with p ∈ ( 0 , 1 ) p \in(0,1) p(0,1) and let Θ \Theta Θ be independent of X 1 X_1 X1 and X 2 X_2 X2. Then, ( Θ ) X 1 + ( 1 − Θ ) X 2 (\Theta) X_1+(1-\Theta) X_2 (Θ)X1+(1Θ)X2 is a simplest Gaussian mixture model.\

Assignment: Θ X 1 + ( 1 − Θ ) X 2 \Theta X_1+(1-\Theta) X_2 ΘX1+(1Θ)X2 has a probability density
p 2 π σ 1 exp ⁡ ( − ( x − μ 1 ) 2 2 σ 1 2 ) + 1 − p 2 π σ 2 exp ⁡ ( − ( x − μ 2 ) 2 2 σ 2 2 ) .  \frac{p}{\sqrt{2 \pi} \sigma_1} \exp \left(-\frac{\left(x-\mu_1\right)^2}{2 \sigma_1^2}\right)+\frac{1-p}{\sqrt{2 \pi} \sigma_2} \exp \left(-\frac{\left(x-\mu_2\right)^2}{2 \sigma_2^2}\right) \text {. } 2π σ1pexp(2σ12(xμ1)2)+2π σ21pexp(2σ22(xμ2)2)
(Hint: P ( Θ X 1 + ( 1 − Θ ) X 2 ⩽ x ) = P ( X 1 ⩽ x ∣ Θ = 1 ) P ( Θ = 1 ) + P ( X 2 ⩽ x ∣ Θ = 0 ) P ( Θ = 0 ) P\left(\Theta X_1+(1-\Theta) X_2\leqslant x\right)=P\left(X_1 \leqslant x \mid \Theta=1\right) P(\Theta=1)+P\left(X_2 \leqslant x| \Theta=0\right) P(\Theta=0) P(ΘX1+(1Θ)X2x)=P(X1xΘ=1)P(Θ=1)+P(X2x∣Θ=0)P(Θ=0) and the independence of Θ \Theta Θ of X 1 X_1 X1 and X 2 X_2 X2.)

2. Python编程

2.1. 伪代码

We now aim to sample a random quantity from the distribution of the above Gaussian Mixture Model.
Pseudo-code

  • Sample a random quantity Θ ∼ Ber ⁡ ( p ) \Theta \sim \operatorname{Ber}(p) ΘBer(p)
    • If Θ = 1 \Theta=1 Θ=1, sample a random quantity X ∼ N ( μ 1 , σ 1 2 ) X\sim N\left(\mu_1, \sigma_1^2\right) XN(μ1,σ12),
    • If Θ = 0 \Theta=0 Θ=0, sample a random quantity X ∼ N ( μ 2 , σ 2 2 ) X\sim N\left(\mu_2, \sigma_2{ }^2\right) XN(μ2,σ22).
  • Return Y = X Y=X Y=X.

2.2. Python编程实现

Assignment: Realize the above psendocode by programming to create 1000 random quantities, and draw a histogram. (Hint: To draw a random quantity X X X from N ( μ , σ 2 ) N\left(\mu, \sigma^2\right) N(μ,σ2), first draw a random quantity Z ∼ N ( 0 , 1 ) Z\sim N(0,1) ZN(0,1) and take X = μ + σ Z X=\mu+\sigma Z X=μ+σZ.)\文章来源地址https://www.toymoban.com/news/detail-675849.html

import numpy as np
import matplotlib.pyplot as plt
# Parameters for the mixture distribution
p = 0.7
mu1, sigma1 = 5, 2
mu2, sigma2 = 10, 3

# Generate random quantities
theta = np.random.choice([0, 1], size=1000, p=[1 - p, p])
X = np.zeros(1000)

for i in range(1000):
    if theta[i] == 1:
        X[i] = np.random.normal(mu1, sigma1)
    else:
        X[i] = np.random.normal(mu2, sigma2)

# Plot histogram
plt.hist(X, bins=30, density=True, alpha=0.6, color='g', label='Sampled Data')
plt.xlabel('Value')
plt.ylabel('Density')
plt.title('Histogram of Mixture of Gaussian Distribution')
plt.legend()
plt.grid(True)
plt.show()

到了这里,关于(一)连续随机数的生成-从混合高斯分布中采样的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java生成随机数

       bound 必须是正数。 以下代码生成的是 0 到 30 的随机数。 生成区间的随机数:[最小值,最大值] 学的不是技术,更是梦想!!!

    2024年02月07日
    浏览(62)
  • Flutter 生成随机数

    如何让随机数变化? 我们尝试过的都知道,当你创建出来一个随机数后,调用他他的值是随机的,但是,这时候他的值就会固定住,不管怎么样都是随机出来的那个数,如果想要他每次都不一样的话,我们就想要使用刷新来让他变化了。 我们可以使用这样的方法来使他每次不一

    2024年02月13日
    浏览(45)
  • haiku生成随机数

    Haiku 遵循 JAX 的设计,生成的随机数是两个元素组成的列表。其中第一个元素是用于生成伪随机数的状态,第二个元素是用于分发密钥的子键。两个元素分别用于状态和子键,确保在分布式计算或并行计算中,多个随机数生成器的状态可以在一定程度上相互影响,从而提高随

    2024年01月20日
    浏览(62)
  • 生成随机数

    用于产生随机数 boolean nextBoolean() : 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 void nextBytes(byte[] bytes) : 生成随机字节并将其置于用户提供的 byte 数组中。 double nextDouble() : 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之

    2024年02月03日
    浏览(52)
  • Hutool 生成随机数和随机字符串

    官方文档: https://www.hutool.cn/docs/#/core/工具类/随机工具-RandomUtil 整理完毕,完结撒花~

    2024年02月16日
    浏览(56)
  • 生成随机数——C语言

    在C语言中,可以使用标准库函数 rand() 来生成随机数。需要注意的是, rand() 函数生成的是伪随机数,具体的随机序列取决于种子(seed)的值。 下面是一个简单的示例代码,展示如何在C语言中生成随机数: 在上述代码中,首先包含了 stdio.h 、 stdlib.h 和 time.h 头文件来使用相

    2024年02月12日
    浏览(55)
  • 【Linux】随机数的生成

    /dev/random是一个随机数生成器设备文件,用于生成高质量的随机数。它通过收集系统上的环境噪声(例如硬件噪声,磁盘活动等)来产生随机数。由于它只在系统上有足够的环境噪声时才能生成随机数,因此/dev/random生成的随机数是高质量的。 但是,/dev/random的主要缺点是,如

    2024年02月11日
    浏览(45)
  • rust怎么生成随机数?

    在 Rust 中,有几种不同的方法可以实现随机数生成。以下是其中几种常见的方法,以及它们的优缺点: 优点: rand crate 是 Rust 中最常用的随机数库,提供了多种随机数生成器和功能。它易于使用,并且具有广泛的社区支持。 缺点: rand crate 生成的随机数是伪随机数,可能不

    2024年02月14日
    浏览(46)
  • MySQL、Oracle 生成随机ID、随机数、随机字符串

    UUID():是由128位的数字组成的全局唯一标识符。每次都生成一个新的随机数。 它通常以32个十六进制数的形式表示,分为5个部分,以连字符分隔。 UUID的长度是36个字符,包括32个十六进制数字和4个连字符。 UUID的标准格式是由 8-4-4-4-12 个十六进制数字组成的,其中每个部分的

    2024年01月16日
    浏览(56)
  • 如何使用Verilog生成随机数

    输入:时钟信号,复位信号,重新加载信号,种子 输出:随机数 输入一个种子32位,输出16位随机数;选取时钟,复位,重新加载种子。 // 使用32个逻辑单元用于D触发器/加法器和8个DSP块用于32x18=32位乘法 module c_rand (   input clk,         // 时钟输入   input rst,        

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包