python - 在python中使用动态平均值从概率分布中绘制随机浮点数
问题描述
我正在寻找一种从概率分布中绘制随机浮点数的方法,该概率分布的均值或位置具有模型中节点的值。最重要的是,绘制的数字不应超过 [-1.0, 1.0] 的范围,并且不应超过 1 个小数。
因此,如果节点的值是 0.8,则 loc 应该是 0.8,但不能绘制 1 之外的值。我对编程真的很陌生,所以如果有人能给我任何关于这是否可以开始的提示,我将不胜感激。使用 normal([loc, scale, size] 我认为这是不可能的。在此先感谢
非常感谢您的回答。我的错,我的意思是小数点后两位!这使得解决方案与您的建议不同,我猜是因为数字的数量增加了很多,也许这种方法不可行?
现在我有这个:
def randomnumber(loc, scale): return np.random.normal(loc, scale, size=None)
elif node == 'is_po':
for neig in graph.predecessors(node):
neig_w = graph.edges[neig, node]['weight']
neig_s = graph.node[neig]['status'][t - delta_t]
loc = neig_s
scale = 1
c = randomnumber(loc, scale)
graph.node[node]['status'][t] = c * delta_t
这似乎给了我一个围绕 neig_s 值绘制的随机数,但我不知道是否有可能确保绘制的随机数不来自高于 1 或低于 -1。
解决方案
我假设您想要一个比例为 1 的正态分布数字。一个简单的解决方案如下:
import numpy as np
def func(loc):
max_iter = 1000
x = np.random.normal(loc)
c = 0
while c < max_iter:
if x > -1 and x < 1:
return x
c += 1
x = np.random.normal(loc)
print('max iter exceeded')
请注意,如果您为 loc 参数指定高值或低值,则 while 循环将永远运行,因此我设置了一个限制“max_iter”。
如果你想要一个更高级的解决方案,那么你已经定义了一个截断的正态分布(你可以在 scipy 中做到这一点)。
推荐阅读
- python-3.x - 如何转置熊猫数据框?
- amazon-web-services - DB 的 API 网关(将所有请求路由到 DB)
- c# - 如何将位图粘贴到另一个位图并在其底部写入文本?
- javascript - React-native with Expo:如何使 Expo auth-session 重定向到同一个应用程序实例而不是单独打开新实例?
- javascript - NodeJS JSON 到客户端处理
- bash - BASH 将列转换为带有标签的行
- python - 优化涉及网格的双循环
- java - MVC 在模型上使用 JTable
- ios - 从 Swift 5 的 NavigationBar 中选择 UIBarButtonItem 时,如何显示带有打开/关闭效果的弹出窗口?
- r - 根据固定排名过滤数据框,同时保留 NA