<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def generate_zip_state_data(means, weights, z):
 """ Generates data according to the Zero-inflated Poisson Convex Mixture Model. Args: means (array):
 Cell types- genes x clusters weights (array):
 Cell cluster assignments- clusters x cells z (float):
 zero-inflation parameter Returns: data matrix - genes x cells """

    x_true = np.dot(means, weights)
    sample = np.random.poisson(x_true)
    random = np.random.random(x_true.shape)
    x_true[random < z] = 0
    return sample.astype(float)