code: def _dropout_helper(draw):
      shape = draw(helpers.get_shape(min_num_dims=1))
      dtype_and_x = draw(
          helpers.dtype_and_values(
              available_dtypes=helpers.get_dtypes("float"),
              shape=shape,
          )
      )
      noise_shape = list(shape)
      if draw(st.booleans()):
          noise_shape = None
      else:
          for i, _ in enumerate(noise_shape):
              if draw(st.booleans()):
                  noise_shape[i] = 1
              elif draw(st.booleans()):
                  noise_shape[i] = None
      seed = draw(helpers.ints(min_value=0, max_value=100))
      rate = draw(helpers.floats(min_value=0, max_value=0.9))
  
      return (
          dtype_and_x,
          noise_shape,
          seed,
          rate,
      )
  
imports: from hypothesis import assume, strategies
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_frontend_test
  from ivy_tests.test_ivy.test_functional.test_core.test_statistical import _statistical_dtype_values
  from ivy_tests.test_ivy.test_functional.test_nn.test_layers import _assume_tf_dilation_gt_1, _output_shape
label_desc: Use image node_id 4 for calling a global function with example usage: _dropout_helper(draw) and returns: dtype_and_x,  noise_shape,  seed,  rate