You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

指数分布样本生成与按需调用问题求助

解决按样本量单独调用指数分布样本的问题

嘿,我看你已经搞定了指数分布样本的生成逻辑,现在就差能按样本量直接调用对应的样本对吧?这里有几个实用的方案帮你解决这个问题:

方案1:返回字典(最直观的调用方式)

把原来的列表换成字典,用样本量作为键,对应的样本数组作为值,这样后续想拿哪个样本量的数据,直接用键访问就行,非常直观:

import numpy as np

def sampleexp():
    samples_dict = {}
    # 遍历所有需要的样本量,把样本存入字典
    for sample_size in range(100, 10100, 100):
        samples_dict[sample_size] = np.random.exponential(scale=1/1.2, size=sample_size)
    return samples_dict

# 先生成所有样本
all_samples = sampleexp()

# 按样本量直接调用:比如获取样本量100的样本
s_100 = all_samples[100]
# 获取样本量10000的样本
s_10000 = all_samples[10000]

方案2:基于原列表做映射(不修改原函数)

如果你不想改动原来的函数,也可以在生成样本列表后,创建一个“样本量→列表索引”的映射,或者直接计算索引来获取对应样本:

import numpy as np

# 保留你原来的函数
def sampleexp():
    samples = []
    for i in range(100, 10100, 100):
        samples.append(np.random.exponential(scale=1/1.2, size=i))
    return samples

all_samples = sampleexp()

### 方法A:直接计算索引
# 样本量n对应的索引是 (n - 100) // 100
target_size = 500
s_target = all_samples[(target_size - 100) // 100]

### 方法B:创建映射字典(更易读)
sample_sizes = list(range(100, 10100, 100))
size_to_index = {size: idx for idx, size in enumerate(sample_sizes)}
# 调用样本量300的样本
s_300 = all_samples[size_to_index[300]]

方案3:按需生成单个样本(节省内存)

如果你不需要一次性生成所有100组样本,只是偶尔需要某一个样本量的数据,可以修改函数让它接受样本量参数,直接返回对应样本:

import numpy as np

def sampleexp_single(sample_size):
    return np.random.exponential(scale=1/1.2, size=sample_size)

# 获取样本量100的样本
s_100 = sampleexp_single(100)
# 获取样本量5000的样本
s_5000 = sampleexp_single(5000)

根据你的需求选就行:如果需要频繁调用不同样本量的已生成数据,方案1最方便;如果想保留原函数逻辑,方案2合适;如果只是按需生成单个样本,方案3更节省内存~

内容的提问来源于stack exchange,提问作者python_infant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:41:32