首页 > 解决方案 > 具有给定均值和标准差的正随机数生成

问题描述

我正在做一个模拟项目。在随机数生成方面需要帮助。我需要两组随机数。

特性:

  1. 主集 (var_a) > 正态分布,大于 0,具有给定的均值和标准差。
  2. 辅助集 (var_b) -> 与主集相同,另外,第二个集不能大于主集。原因是确定性函数的输出将仅以 0-1 之间的百分比表示。例如:

服务水平计算

import numpy as np

n = 100000

# Calls Handled
callshandled = np.random.normal(loc=65,  scale=97, size=n)
print('Calls handled: ', callshandled)

# Call handled within sl. Has to always be less or equal to Calls Handled
ansinsl = np.random.normal(loc=60,  scale=82, size=n)
print('Answered in SL', ansinsl)

# Service Level - Has to be between 0-1. With normal distribution we get values in negative
sl = np.array(ansinsl)/np.array(callshandled)
print('Service level', sl)

Calls handled:  [ 43.26825426 129.79198758  31.56460354 ...  37.45059791   1.71420416
 -94.87241356]
Answered in SL [-12.72293091 204.28084996 232.25722235 ... 166.03208722 -53.69933624
 -36.71949656]
Service level [ -0.29404771   1.57390956   7.35815427 ...   4.43336279 -31.32610312
   0.38704082]

标签: randommeannormal-distributionstandard-deviation

解决方案


有一种众所周知的“自然”方法可以生成高斯伪随机变量,称为Box-Muller

你可以这样尝试:

  1. 生成成对的单位正态变量à la Box-Muller
  2. 将这些对缩放到您的 (µ,σ) 参数是什么
  3. 拒绝不符合您标准的配对

推荐阅读