假设我有一个非整数值的列浮点数组:
数据= [1.1; 1.2; 1.3; 1.4; 1.5]
我想在此数组中的两个连续值之间生成随机数,并将这些值存储在新数组中。即,新数组中的第一个值是1.1到1.2之间的随机数,下一个1.2到1.3之间的随机数,依此类推。
我希望获得一个像data_rand = [1.15; 1.24; 1.37; 1.46] 基于原始数据阵列。
我的问题是(我将如何/什么是最好的方法)迭代数组中的所有值,并在数组中的每个后续数字对之间生成一个非整数随机数,将这些随机数保存到一个新阵列?有人可以根据这个小的5值数据阵列提供一个例子吗?或者指出每个阶段的正确方向。
答案 0 :(得分:1)
要获得a
和b
之间的随机值,您可以在0
和1
之间添加random
值,乘以两者之间的绝对差值a
和b
,a
和b
中的较小者。
要轻松获取列表中的项目对,您可以使用zip
和切片:
>>> l = [1, 2, 3]
>>> zip(l, l[1:])
[(1, 2), (2, 3)]
除此之外,我建议你自己动手。
答案 1 :(得分:0)
import random
rand_data = map(random.uniform, data[:-1], data[1:])
random.uniform(a, b)
为您提供a
和b
之间的随机浮点数。您可以将此函数映射到列表的两个切片(第一个切片删除最后一个元素,第二个切片删除第一个元素)。因此,在您的示例中,两个切片将如下所示:[1.1, 1.2, 1.3, 1.4]
和[1.2, 1.3, 1.4, 1.5]
。
答案 2 :(得分:0)
import random
results = []
l = [1.1, 1.2, 1.3, 1.4, 1.5]
for x in zip(l, l[1:]):
x = list(int(y * 100) for y in x)
results.append(float(random.randrange(x[0], x[1])) / 100)
这里我乘以/除以100,因为我想要2位小数,使用10作为1位小数。
输出:
结果
[1.14, 1.22, 1.37, 1.44]