2011-01-08 94 views
1

我正在尋找生成數據,其中給定兩個平均值(平均點擊)和(平均點擊時間)將正確輸出間隔的數據。Excel生成標準化數據

很難解釋,但最好的例子。

鑑於以下數據:

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。


下將工作,因爲它有一個點擊值平均爲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 

下將的工作,因爲它有一個整體平均值爲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)。

回答

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 
0

我覺得你可以很容易地實現使用求解器。製作一個你想要的模型,將你的目標(2個平均值)定義爲公式,然後給它解決的數據範圍。不過,每次你都可以得到相同的答案。試一試。
請注意,Solver是可選安裝,如果您進行標準安裝而不是完整安裝,則該安裝可能不可見。