我希望生成一些数据,其中给定两个平均值(平均点击次数)和(一次性平均点击次数)将正确输出间隔开的数据。
很难解释,但最好用一个例子。
鉴于以下数据:
Days: 10
Average Click Value: 3.5
Average Clicks over days: 0.7
然后您可以制作如下数据:
Day 1
Day 2
Day 3 4
Day 4
Day 5
Day 6
Day 7
Day 8
Day 9 3
Day 10
第9天(3)和第3天(4)之间的平均值为3.5,总平均值(7天超过10天)为0.7。
以下 NOT 可以正常工作,因为它的点击价值平均为3.5,但整体平均值为1.4:
Day 1 4
Day 2
Day 3 3
Day 4
Day 5
Day 6 4
Day 7
Day 8
Day 9 3
Day 10
以下 NOT 有效,因为它的总体平均值为0.7,但点击值为1.75:
Day 1 1
Day 2
Day 3 2
Day 4
Day 5 3
Day 6
Day 7
Day 8
Day 9 1
Day 10
点击值必须是整数,因此以下操作无效:
Day 1
Day 2
Day 3 3.5
Day 4
Day 5
Day 6
Day 7
Day 8
Day 9 3.5
Day 10
每个之间的间距应该是随机的,但要遵循严格的偏差。该模式应与用户访问其喜爱的网站的频率类似。
我理解它有时候不准确,因为某些组合不能用数学方法完成,但它应该尽可能接近它。
这种模式是否可以使用excel(可以使用VBA)。
答案 0 :(得分:1)
这是一个入门阵列功能:您可以垂直输入:选择行数=到天数,输入功能并按Ctrl-Shift-Enter。 随机程度由变化常数控制。
Function ClickSpacer(nDays As Long, ClickAvg As Double, ClicksPerDay As Double)
Dim Spacing As Long
Dim Clicks() As Long ''' output
Dim Total_Clicks As Double
Dim nDaysClicked As Double
Dim j As Long
Dim ClicksSoFar As Long
Dim RandSpacing As Long
Dim RandClicks As Long
Dim ClickOffset As Long
ReDim Clicks(1 To nDays, 1 To 1)
Const Variation As Double = 0.2
Total_Clicks = Round(nDays * ClicksPerDay, 0)
nDaysClicked = Round(Total_Clicks / ClickAvg, 0)
Spacing = nDays / (nDaysClicked + 1)
RandSpacing = Round(Spacing * Variation, 0) * 2
ClickOffset = Spacing + Round(Rnd() * RandSpacing, 0) - Round(Rnd() * RandSpacing, 0)
RandClicks = ClickAvg * Variation * 2
For j = 1 To nDaysClicked
If j > 1 Then ClickOffset = ClickOffset + Spacing + Round(Rnd() * RandSpacing, 0) - Round(Rnd() * RandSpacing, 0)
If j = nDaysClicked Then
Clicks(ClickOffset, 1) = Round((Total_Clicks - ClicksSoFar) / (nDaysClicked - j + 1), 0)
Else
Clicks(ClickOffset, 1) = Round((Total_Clicks - ClicksSoFar) / (nDaysClicked - j + 1) + (RandClicks * Rnd() - RandClicks * Rnd()), 0)
End If
ClicksSoFar = ClicksSoFar + Clicks(ClickOffset, 1)
Next j
ClickSpacer = Clicks
End Function
答案 1 :(得分:0)
我认为您可以使用Solver轻松实现这一目标。制作一个你想要的模型,定义你的目标(2个平均值)作为公式,然后给它解决的数据范围。但是,你每次都可能得到相同的答案。试一试。
请注意,Solver是可选安装,如果您进行标准安装而不是完整安装,则可能不会显示。