Arrays 在numpy数组中生成一系列稍微随机的整数

Arrays 在numpy数组中生成一系列稍微随机的整数,arrays,python-3.x,numpy,dithering,sine-wave,Arrays,Python 3.x,Numpy,Dithering,Sine Wave,我想在numpy阵列中创建复合音频测试信号。我需要这些值是整数,四舍五入到最接近的整数。其次,我想添加随机噪声或抖动 您可以在下面看到我当前使用的代码。这应该包括24位整数(如果我正确的话),即使它存储在32位整数字中(以匹配通常以这种方式存储的pcm音频样本) 在本例中,第一个正弦波音调在半峰值(-6dBfs)处为1000.2Hz。这里还有两个正弦波分量,但实际上它可以包含任意数量的正弦波分量。现在我想添加一些抖动。这将作为数组中每个坐标的随机值进行计算。它会给每个数组元素(每个音频样本)添加

我想在numpy阵列中创建复合音频测试信号。我需要这些值是整数,四舍五入到最接近的整数。其次,我想添加随机噪声或抖动

您可以在下面看到我当前使用的代码。这应该包括24位整数(如果我正确的话),即使它存储在32位整数字中(以匹配通常以这种方式存储的pcm音频样本)

在本例中,第一个正弦波音调在半峰值(-6dBfs)处为1000.2Hz。这里还有两个正弦波分量,但实际上它可以包含任意数量的正弦波分量。现在我想添加一些抖动。这将作为数组中每个坐标的随机值进行计算。它会给每个数组元素(每个音频样本)添加一个小的随机生成的值,比如在+0和-0.5峰值之间


我的代码似乎工作正常,但不包括随机“抖动”组件。有人能告诉我怎么做吗?并向我保证,我最终会得到24位分辨率的整数。

使用
random.randrange()
有什么问题吗?谢谢zhqiat。我的问题是,如何将该函数集成为该阵列生成器中的附加组件?我应该提到,我还需要一种方法,将最低8位设置为全零或类似的值,以将分辨率从32位降低到24位。我做音频信号处理已经有一段时间了,但是如果你在做
x+0
,你不能用
+random.randrange(-1,1)/2
替换
+0
来模拟0.5或-0.5峰值吗?这里的+0分量用来改变正弦波的相位。在这里输入一个随机值会增加抖动(时间上的随机性-在x轴上)。对于一些测试来说,这是一件值得做的事情,但不是我目前需要的随机级别组件(y轴上的随机性)。
x = np.linspace(0, 48000, 48000, False, dtype = "int32")

pcm_array:np.dtype(np.int32) = 
    (1073741824 * np.sin(((x + 0) * 1000.2 / 48000) * 2 * np.pi)) + 
    (10737418.24 * np.sin(((x + 0) * 1049.7 / 48000) * 2 * np.pi)) + 
    (1.073741824 * np.sin(((x + 0) * 1200.5 / 48000) * 2 * np.pi))