Is there a way to restrict Brownian Motion to a specific axis?

I have set up a simple particle system containing 1000 particles with Normal Velocity of 4.0, Z Velocity of -1 and gravity turned down to 0. I've set the Brownian Motion 20. Is there a way to limit the particles' movement to a specific axis?

This solution assumes that the motion is introduced by the Force Fields on planes. The emitter only has some Normal value to kick start the motion. Gravity is turned off.

You could use a Plane object set to a Harmonic Field (shape: Surface) with strength 4, rest length 0.2. I placed mine above the emitter plane.

To get a random pattern you could vary the emission of particles by using a texture. To get randomness in the oscillation you could use 2 opposing planes with Lennard Jones effect type. Using large values, they will juggle particles between themselves. Any that are spilled come to rest.

The plane at the bottom is the emitter.

You can fake the axis constraints using Animation Nodes addon (https://github.com/JacquesLucke/animation_nodes/releases).

The principle is to create dupli objects depending on the amount of alive particles. Then place these dupli with random values and make them follow the particles, but only on the wanted axis or direction.

The node setting:

Main part

1- Obtain the particle systems from the emitter object

2- Get the wanted particle system

3- Get the particles from it

4- Filter for only alive particles

5- Make dupli objects with an objects instancer node

6- Call a subprogram to set the initial position of the dupli objects

7- Call another one to make the objects follow the particles

Coordinates assignation

1- Input node which give each of the dupli objects

2- Generate random numbers for X Y and Z

3- Combine X, Y, Z as a vector

4- Transform the dupli object location with the previous random values

5- Output the objects

1- Gets each particle and dupli objects as input

2- Retrieve location information from the particle

3- Gets the dupli object that corresponds to the particle

4- Extract the wanted axis from the particle. The one which is to follow

5 and 6- Extract the object's coordinates which are to be constant

7- Combine 4 and 6 in a new vector

8- Set this vector as location for the dupli object