如何根据正弦函数对值进行排序?
How to Sort Values According to Sine function?
我在排序之前生成了一定范围内的随机数:
A = []
for _ in range(10000):
value = np.random.randint(60,100)
A.append(value)
A = sorted(A)
但我想做的是获得一个像正弦图(有峰谷)一样排序的 A 列表。所以本质上,这些值应该以一种逐渐上升和下降的方式排序,谷值在 60,峰值在 100。
我正在尝试创建非常简单的模拟心率模拟数据。我考虑过使用自定义键进行排序,但我不知道从哪里开始。我也研究了 Faker,但我认为我无法用它实现我想要的生成数据(如果我错了请纠正我!)
完全可以针对此问题提供不同的解决方案。提前致谢!
一种可能性是生成随机阶段,即 sin
函数的参数。你必须首先决定你想要多少个周期(每个周期有一个谷和一个峰)。如果您想要 CY
个周期,那么您必须生成 (0, N * 2 * pi)
.
范围内的数字
然后对阶段进行排序,最后将 sin
函数应用于阶段。
import numpy as np
CY = 8
ph = np.random.rand(800) * CY * 2 * np.pi
ph.sort()
A = np.sin(ph)
# then you can plot the numbers, for example
from matplotlib import pyplot as plt
plt.plot(A)
plt.show()
函数调用np.random.rand(800)
生成800个区间(0,1)内的随机数,所以需要相乘才能得到想要的区间。
如果使用太多数字,结果与 sin 函数无法区分。
另一种可能性是从 sin
函数开始,然后添加随机数:
N = 800; CY = 8; DEV = 0.3
sin = np.sin(np.linspace(0, CY*2*np.pi, N))
A = sin + np.random.rand(N) * DEV
你也可以尝试换一个sin函数
我在排序之前生成了一定范围内的随机数:
A = []
for _ in range(10000):
value = np.random.randint(60,100)
A.append(value)
A = sorted(A)
但我想做的是获得一个像正弦图(有峰谷)一样排序的 A 列表。所以本质上,这些值应该以一种逐渐上升和下降的方式排序,谷值在 60,峰值在 100。
我正在尝试创建非常简单的模拟心率模拟数据。我考虑过使用自定义键进行排序,但我不知道从哪里开始。我也研究了 Faker,但我认为我无法用它实现我想要的生成数据(如果我错了请纠正我!)
完全可以针对此问题提供不同的解决方案。提前致谢!
一种可能性是生成随机阶段,即 sin
函数的参数。你必须首先决定你想要多少个周期(每个周期有一个谷和一个峰)。如果您想要 CY
个周期,那么您必须生成 (0, N * 2 * pi)
.
然后对阶段进行排序,最后将 sin
函数应用于阶段。
import numpy as np
CY = 8
ph = np.random.rand(800) * CY * 2 * np.pi
ph.sort()
A = np.sin(ph)
# then you can plot the numbers, for example
from matplotlib import pyplot as plt
plt.plot(A)
plt.show()
函数调用np.random.rand(800)
生成800个区间(0,1)内的随机数,所以需要相乘才能得到想要的区间。
如果使用太多数字,结果与 sin 函数无法区分。
另一种可能性是从 sin
函数开始,然后添加随机数:
N = 800; CY = 8; DEV = 0.3
sin = np.sin(np.linspace(0, CY*2*np.pi, N))
A = sin + np.random.rand(N) * DEV
你也可以尝试换一个sin函数