<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def noise(mesh, magnitude=None):
 """ Add gaussian noise to every vertex of a mesh. Makes no effort to maintain topology or sanity. Parameters mesh: Trimesh object (will not be mutated) magnitude: float, what is the maximum distance per axis we can displace a vertex. Default value is mesh.scale/100.0 Returns permutated: Trimesh object, input mesh with noise applied """

    if magnitude is None:
        magnitude = mesh.scale / 100.0

    random = (np.random.random(mesh.vertices.shape) - .5) * magnitude
    vertices_noise = mesh.vertices.copy() + random

    # make sure we've re- ordered faces randomly
    triangles = np.random.permutation(vertices_noise[mesh.faces])

    mesh_type = util.type_named(mesh, 'Trimesh')
    permutated = mesh_type(**triangles_module.to_kwargs(triangles))

    return permutated