在Python中,如何在某个范围内随机更改浮点值?

在Python中,如何在某个范围内随机更改浮点值?,python,random,Python,Random,下面是名为“inputfile”的输入文件中的浮点列表 我想通过每个浮点循环,并将其随机化±0.100。我该怎么做呢 0.08777767595196 0.41688405291929 1.90493522025702 -0.44512262940079 -1.68572227053594 -0.19769851139757 0.61588125474274 2.98863319423069 -0.78312326907806 -2.73208403405514 -0.36

下面是名为“inputfile”的输入文件中的浮点列表 我想通过每个浮点循环,并将其随机化±0.100。我该怎么做呢

 0.08777767595196
 0.41688405291929
 1.90493522025702
 -0.44512262940079
 -1.68572227053594
 -0.19769851139757
 0.61588125474274
 2.98863319423069
 -0.78312326907806
 -2.73208403405514
 -0.36006068363418
输出是您正在查找的列表,并输入您的输入列表

如果文件太大,无法存储两个数组,则可以直接修改输入文件,如下所示:

noise = 0.1    
for i in range(len(input)):
    input[i] = float(input[i]) + random.random() * noise  * 2 - noise
像这样的

import numpy as np

txtFloatNumbers = np.loadtxt("inputfile.txt", delimiter=" ")

for i, element in enumerate(txtFloatNumbers):
    txtFloatNumbers[i] = element + np.random.uniform(-0.1, 0.1)

第一件事是明确说明“随机化”是什么意思。你是说掷硬币加0.1还是减0.1?生成一个介于-0.1和0.1之间的随机数,并为每个值添加该值?对于后者,采用哪种分布?例如,统一还是正常?看看随机模块的这一部分:对于工作流,如果文件不是太大(是一千个还是一百万个值?),您可以读取所有内容,然后在其上循环(或者更好,使用列表理解),或者如果文件太大,您可以“批量”读取,为了避免在内存中保留太多的内容。我的意思是生成一个介于-0.1和0.1之间的随机数,并为每个值添加这个值,很抱歉我的问题不清楚!
txtFloatNumbers+=np.random.uniform(-0.1,0.1,size=txtFloatNumbers.shape)
不是比for循环更简单、更快吗?@Sam Mason我认为你是绝对正确的,但刚刚检查了一下,对于一个有10000个以上浮点数的txt,你的解大约快0.03503 ns。你在测量其他东西;使单个CPU指令失效需要约0.1纳秒!我对numpy矢量化的建议是,您的代码可以获得约30毫秒,而速度可以提高约70µs(即更快约500倍)
import numpy as np

txtFloatNumbers = np.loadtxt("inputfile.txt", delimiter=" ")

for i, element in enumerate(txtFloatNumbers):
    txtFloatNumbers[i] = element + np.random.uniform(-0.1, 0.1)