生成指数分布随机数———python代码

本文介绍了如何使用Python生成指数分布的随机数,并通过CSV文件记录生成的数据。首先定义了一个随机数生成类,利用线性同余法生成0到1之间的随机数,然后计算得到指数分布变量。最后,将1000个生成的整数值写入CSV文件,便于后续分析。
摘要由CSDN通过智能技术生成

如下为生成指数分布随机数python代码,并将生成的数保存到csv文件内

# 生成指数分布随机变量
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import csv


class Random(object):

    def __init__(self, x=None):  # 初始函数,x为初始种子,缺省为时间值
        if x is None:
            import time
            self.seed = int(time.time())
        else:
            self.seed = int(x)
        self._seed = self.seed

    def random_rand(self):
        '''
        线性同余产生0~1之间的随机数

        X(k) = [a * X(k-1) + c] mod m
        '''
        # 以下参数值参照GCC编译器
        m = 2 ** 32
        a = 1103515245
        c = 12345
        self._seed = (a * self._seed + c) % m
        return self._seed / float(m - 1)

JT_random = Random(1)


def exponential_rand(lam):
    if lam <= 0:                      # 检验参数λ的合法性
        return -1
    u = JT_random.random_rand()       # 生成随机数
    return (-1.0 / lam) * np.log(u)   # 根据实现原理的公式 计算指数分布随机变量


a = []
b={}
for i in range(0,1000):
    c = int(JT_random.random_rand()+1)
    k= exponential_rand(c)*10
    a.append(int(k))
for i in a:
    if i in b.keys():
        b[i] += 1
        continue
    b[i]=1n
for i,j in b.items():
    print(i,"  ",j)


with open("kkk.csv", "a", newline='') as f:
    writer = csv.writer(f)
    writer.writerow(b.keys())
    writer.writerow(b.values())

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小佈要早睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值