首页 > 解决方案 > 如何将随机数添加到数组的每个值

问题描述

我想知道如何将给定范围内的随机数添加到数组的每个值。

我有一个由 1000 个值组成的数组,当绘制它时,它会给我一个 S 曲线。

问题是,我想在这条曲线上添加噪声,这就是为什么我想在数组的值中添加一个随机数,每个值都会改变。

我目前的代码是这样的:

import numpy as np
import matplotlib.pyplot as plt
import random

def sigmoid(z):
    return 1/(1+np.exp(-z))

n=random.randint(-0.1,0.1)
y = np.arange(-5, 5, 0.01)
print(y)

for i in range(0,1000):
    y[i]=y[i]+n
    i=i+1
    
plt.plot(y, sigmoid(y), marker='x')
plt.show()

但是出现了这个错误:“randrange() 的非整数 arg 1”

您对如何解决此问题有任何想法吗?

标签: pythonarraysnumpyrandom

解决方案


该函数random.randint(a, b)只接受范围值a和的整数输入b,并将返回一个随机整数 N:a <= N <= b。此外,如果你想添加噪音,你不应该只调用random.randint()一次函数。它将以这种方式为每个索引添加相同的值。我的建议是,使用np.random.rand()函数。它基本上会生成一个随机数组,您可以指定其形状,其概率分布在 [0, 1) 范围内。您可以通过以下方式扩展和移动基础分布scale * np.random.rand(shape) + shift


推荐阅读