# How to obtain desirable performance of dynamic variable?

I need to create the code that generates a sample based on an adjustable parameter and, later, interactively calculates statistics or builds a plot for the generated sample. Let's insert a slider

Slider[Dynamic[m1], {-2, 2}]


and perform the calculation

(* 1 *) Sample = Dynamic[RandomVariate[NormalDistribution[m1, 0.5], 10]]
(* 2 *) Dynamic[Mean[Sample]]
(* 3 *) Mean[Sample]
(* 4 *) Dynamic[Mean[RandomVariate[NormalDistribution[m1, 0.5], 10]]]


None of 4 items has the required performance. 1: only calculates a sample, 2: returns Mean[{...}] unevaluated for another sample, 3: the same, unevaluated for 3d sample, 4: does calculate Mean for 4th sample.

It's possible to use control for creating static variable (see my question), but now I need the dynamic behavior mentioned above.

Try this:

Manipulate[
Module[{ms, mr},
Sample = RandomVariate[NormalDistribution[m1, 0.5], 10];
ms = Mean[Sample];

mr = Mean[RandomVariate[NormalDistribution[m1, 0.5], 10]];
{ms, mr}], {m1, -2, 2}]


Have fun!

• I understood. Module inside Manipulate. Not exactly what I need (for some reasons), but as an intermediate solution, this works. Блвгодарю, Alex. Dec 17, 2020 at 9:55
• Module you only need if you want to scope the variables ms and mr. If you do not need to scope them you may remove Module. You can also do that using Dynamic but Manipulate is more straightforward. Dec 17, 2020 at 10:02
• Sure, it's clear Dec 17, 2020 at 10:09