def METHOD_NAME(self, draw):
    in_shape = draw(
        st.lists(
            st.integers(
                min_value=2, max_value=10), min_size=2, max_size=4))
    in_num_col_dims = draw(
        st.integers(
            min_value=1, max_value=len(in_shape) - 1))
    weights_0 = 1
    weights_1 = 1
    for i in range(len(in_shape)):
        if (i < in_num_col_dims):
            weights_1 = weights_1 * in_shape[i]
        else:
            weights_0 = weights_0 * in_shape[i]
    weights_shape = [weights_0, weights_1]
    padding_weights = draw(st.booleans())
    # OpenCL and ARM dose not support this attribute
    if (self.get_target() in ['OpenCL', 'ARM']):
        padding_weights = False
    if (padding_weights):
        weights_shape = [weights_0 + 4, weights_1 + 4]
    bias_shape = [weights_1]
    with_bias = draw(st.sampled_from([True, False]))
    def generate_input(*args, **kwargs):
        return (np.random.random(in_shape).astype(np.float32) - 0.5) * 2
    def generate_weights(*args, **kwargs):
        return (
            np.random.random(weights_shape).astype(np.float32) - 0.5) * 2
    def generate_bias(*args, **kwargs):
        return (np.random.random(bias_shape).astype(np.float32) - 0.5) * 2
    act_type = ""
    if (with_bias and random.random() > 0.5):
        act_type = "relu"
    op_inputs = {}
    program_inputs = {}
    program_weights = {}
    if (with_bias):
        op_inputs = {
            "Input": ["input_data"],
            "W": ["weights_data"],
            "Bias": ["bias_data"]
        }
        program_inputs = {
            "input_data": TensorConfig(data_gen=partial(generate_input)),
        }
        program_weights = {
            "weights_data":
            TensorConfig(data_gen=partial(generate_weights)),
            "bias_data": TensorConfig(data_gen=partial(generate_bias))
        }
    else:
        op_inputs = {"Input": ["input_data"], "W": ["weights_data"]}
        program_inputs = {
            "input_data": TensorConfig(data_gen=partial(generate_input)),
        }
        program_weights = {
            "weights_data":
            TensorConfig(data_gen=partial(generate_weights))
        }
    fc_op = OpConfig(
        type="fc",
        inputs=op_inputs,
        outputs={"Out": ["output_data"]},
        attrs={
            "in_num_col_dims": in_num_col_dims,
            "activation_type": act_type,
            "use_mkldnn": False,
            "padding_weights": padding_weights,
            "use_quantizer": False,
            "Scale_in": float(1),
            "Scale_weights": [float(1)],
            "Scale_out": float(1)
        })
    program_config = ProgramConfig(
        ops=[fc_op],
        weights=program_weights,
        inputs=program_inputs,
        outputs=["output_data"])
    return program_config