poisson过程——随机模拟(Python和R实现)

Python实现

exponential()使用,自动poisson过程实现。

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

# Parameters
lambda_rate = 5  # rate parameter (events per time unit)
T = 10  # total time

# Generate Poisson process
times = np.random.exponential(1/lambda_rate, int(lambda_rate * T * 1))
arrival_times = np.cumsum(times)
arrival_times = arrival_times[arrival_times < T]

# Plot Poisson process
plt.step(np.concatenate([[0], arrival_times]), np.arange(len(arrival_times) + 1), where='post')
plt.xlabel('Time')
plt.xticks(np.arange(0, T + 1, 1))
plt.ylabel('Number of events')
plt.title('Poisson Process')
plt.show()

def poisson函数使用。

python 复制代码
#正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#%%
import random
import numpy as np
import matplotlib.pyplot as plt

def poisson(T,lambdas):
    t = 0
    i = 0
    s = [t]
    while True:
        u = random.expovariate(lambdas)
        t = t + u
        if t <= T:
            i = i + 1#计数
            s.append(np.round(t,2))#记录发生事件的时间,保留两位小数
        else:
            break
    print(f'{T}时间内事件发生的次数:',i,'\n 各个事件发生的时刻:',s)

    #绘制样本轨迹
    n = i + 1
    x = np.arange(n)
    plt.step(s,x, where='post')#绘制阶梯图
    plt.xticks(s)#设置x轴刻度
    plt.xlabel('时间t')
    plt.ylabel('N(t)')
    plt.title('Poisson Process')
    plt.show()
    return s
#生成图像
poisson(4,1)#参数分别为T和lambda,T为时间长度,lambda为单位时间内事件发生的次数

R语言实现

R 复制代码
#R语言实现poisson过程
# Parameters
lambda_rate <- 5  # rate parameter (events per time unit)
T <- 10  # total time

# Generate Poisson process
set.seed(123)  # for reproducibility
times <- rexp(n = ceiling(lambda_rate * T * 1.5), rate = lambda_rate)
arrival_times <- cumsum(times)
arrival_times <- arrival_times[arrival_times < T]

# Plot Poisson process
plot(stepfun(arrival_times, 0:length(arrival_times)), do.points = FALSE, xlab = "Time", ylab = "Number of events", main = "Poisson Process")
相关推荐
2501_944521591 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理1 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
wangchunyu1143 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
程序 代码狂人4 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_944521594 小时前
Immer 跨端三方库仓颉适配全流程
python·eclipse·django
信誓旦旦的程序猿5 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
2501_944521595 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
Patrick在香港5 小时前
同一行 strftime,两台机器跑出两种日期
python·datetime·时区·locale·日期处理
2601_967987375 小时前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程
python·opencv·yolo·目标检测·游戏自动化
meiying88385 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化