def points_random_3d(count, range_x=(-<NUM_LIT>, <NUM_LIT>), range_y=(-<NUM_LIT>, <NUM_LIT>), range_z=(-<NUM_LIT>, <NUM_LIT>), seed=None) -> VAO:
random.seed(seed)<EOL>def gen():<EOL><INDENT>for _ in range(count):<EOL><INDENT>yield random.uniform(*range_x)<EOL>yield random.uniform(*range_y)<EOL>yield random.uniform(*range_z)<EOL><DEDENT><DEDENT>data = numpy.fromiter(gen(), count=count * <NUM_LIT:3>, dtype=numpy.float32)<EOL>vao = VAO("<STR_LIT>", mode=moderngl.POINTS)<EOL>vao.buffer(data, '<STR_LIT>', ['<STR_LIT>'])<EOL>return vao<EOL>
Generates random positions inside a confied box.

Args:
    count (int): Number of points to generate

Keyword Args:
    range_x (tuple): min-max range for x axis: Example (-10.0. 10.0)
    range_y (tuple): min-max range for y axis: Example (-10.0. 10.0)
    range_z (tuple): min-max range for z axis: Example (-10.0. 10.0)
    seed (int): The random seed

Returns:
    A :py:class:`demosys.opengl.vao.VAO` instance