2015-03-30 2 views
0

В Excel легко найти среднее и стандартное отклонение с учетом 10 отдельных точек данных. Но возможно ли генерировать 10 случайных точек данных в Excel, учитывая среднее и стандартное отклонение?Excel, как найти реальные случайные данные из среднего и стандартного отклонения?

В Excel я могу щелкнуть правой кнопкой мыши «Просмотреть код» и получить доступ к макрокоманде, чтобы использовать макрокодирование, но как бы мне это сделать?

Sub rand() 
    Range("B4").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B4").Calculate 
    Range("B4").Value = Range("B4").Value 
    Range("B5").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B5").Calculate 
    Range("B5").Value = Range("B5").Value 
    Range("B6").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B6").Calculate 
    Range("B6").Value = Range("B6").Value 
    Range("B7").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B7").Calculate 
    Range("B7").Value = Range("B7").Value 
    Range("B8").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B8").Calculate 
    Range("B8").Value = Range("B8").Value 
    Range("B9").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B9").Calculate 
    Range("B9").Value = Range("B9").Value 
    Range("B10").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B10").Calculate 
    Range("B10").Value = Range("B10").Value 
    Range("B11").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B11").Calculate 
    Range("B11").Value = Range("B11").Value 
    Range("B12").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B12").Calculate 
    Range("B12").Value = Range("B12").Value 
    Range("B13").Formula = "=NORMINV(RAND(),$B$14,$B$15)" 
    Range("B13").Calculate 
    Range("B13").Value = Range("B13").Value 
End Sub 

Это мои случайные данные генерируются на основе среднего значения и станд разработчика, то я буду использовать эти данные, чтобы найти среднее и станд DEV, если среднее и станд DEV не означает, значение я не хочу затем повторить, пока он правильно, так какой код мне нужно добавить, чтобы сделать его повторным?

+0

В общем, вы не можете выполнять обратное проектирование 10 точек данных дается только стандартное отклонение и среднее. –

+0

Я знаю, как это сделать в других программах, таких как JAVA, но в excel i dunno, в java можно использовать случайные данные генерации, пока не встретит правильное среднее и std dev ... затем примите –

ответ

1

Без VBA:

, мы хотим набор значений со средним значением и станд-разработчика из +0,005

В A1 через A20 войти :

=RAND() 

это d ata, мы должны трансформироваться в соответствии с нашими требованиями. В В1 входят:

=A1*0.005/STDEVP(A:A) 

и скопировать вниз через B20. Значения в столбце B будут иметь желаемый std-dev.

В C1 входят:

=B1+7-AVERAGE(B:B) 

и скопировать вниз через C20.

Колонка C будет иметь как правильную Std-Dev и правильное среднее:

enter image description here

С помощью VBA:

Выполните точно такую ​​же технику, но использовать массивы, а не столбцы клеток. Также одинаково легко создавать выборочные данные для дистрибутивов Poisson, LogNormal и т. Д. Вот некоторые простой код, чтобы положить 20 значений в столбце G:

Sub ForcedDistribution() 
    Dim ary(1 To 20) As Double 
    Dim bry(1 To 20) As Double 
    Dim cry(1 To 20) As Double 
    Dim mean As Double, std As Double 
    Dim i As Long, wf As WorksheetFunction 
    Set wf = Application.WorksheetFunction 

    Randomize 
    mean = 7# 
    std = 0.005 

    For i = 1 To 20 
     ary(i) = Rnd 
    Next i 

    For i = 1 To 20 
     bry(i) = ary(i) * std/wf.StDevP(ary) 
    Next i 

    For i = 1 To 20 
     cry(i) = bry(i) - wf.Average(bry) + mean 
    Next i 

    For i = 1 To 20 
     Cells(i, 7).Value = cry(i) 
    Next i 
End Sub