<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def rejection_pick(L, n, d, valid, rng=None):
 """Return cartesian vectors uniformly picked in a space with an arbitrary number of dimensions, which is fully enclosed by a cube of finite length, using a supplied function which should evaluate whether a picked point lies within this space. The picking is done by rejection sampling in the cube. Parameters L: float Side length of the enclosing cube. n: integer Number of points to return d: integer The number of dimensions of the space Returns ------- r: array, shape (n, d) Sample cartesian vectors """

    if rng is None:
        rng = np.random
    rs = []
    while len(rs) < n:
        r = rng.uniform(-L / 2.0, L / 2.0, size=d)
        if valid(r):
            rs.append(r)
    return np.array(rs)