code: def make_gather_map(len_gather_map: Real, len_column: Real, how: str):
      """Create a gather map based on "how" you'd like to gather from input.
      - sequence: gather the first `len_gather_map` rows, the first thread
                  collects the first element
      - reverse:  gather the last `len_gather_map` rows, the first thread
                  collects the last element
      - random:   create a pseudorandom gather map
  
      `len_gather_map`, `len_column` gets rounded to integer.
      """
      len_gather_map = round(len_gather_map)
      len_column = round(len_column)
  
      rstate = cupy.random.RandomState(seed=0)
      if how == "sequence":
          return cudf.Series(cupy.arange(0, len_gather_map))
      elif how == "reverse":
          return cudf.Series(
              cupy.arange(
                  len_column - 1, len_column - len_gather_map - 1, -1
              )
          )
      elif how == "random":
          return cudf.Series(
              rstate.randint(0, len_column, len_gather_map)
          )
  
imports: import inspect
  import re
  import textwrap
  from collections.abc import MutableSet
  from itertools import groupby
  from numbers import Real
  import pytest_cases
  from config import NUM_COLS, NUM_ROWS, cudf, cupy
label_desc: Use image node_id 1 for calling a global function with example usage: make_gather_map(len_gather_map, len_column, how) and returns: cudf, cudf, cudf