docstr: Select random vertices from the graph
  
  Parameters
  ----------
  random_state : int , optional(default=None)
      Random state to use when generating samples.  Optional argument,
      defaults to a hash of process id, time, and hostname.
  
  num_vertices : int, optional(default=None)
      Number of vertices to sample. If None, all vertices will be selected
  
  Returns
  -------
  return random vertices from the graph as a dask object
docstr_tok: ["Select","random","vertices","from","the","graph","Parameters","--","--","--","--","--","random_state",":","int",",","optional","(","default=None",")","Random","state","to","use","when","generating","samples",".","Optional","argument",",","defaults","to","a","hash","of","process","id",",","time",",","and","hostname",".","num_vertices",":","int",",","optional","(","default=None",")","Number","of","vertices","to","sample",".","If","None",",","all","vertices","will","be","selected","Returns","--","--","--","-","return","random","vertices","from","the","graph","as","a","dask","object"]
code: def select_random_vertices(
      self, random_state: int = None, num_vertices: int = None
  ) -> Union[dask_cudf.Series, dask_cudf.DataFrame]:
      """
      Select random vertices from the graph
  
      Parameters
      ----------
      random_state : int , optional(default=None)
          Random state to use when generating samples.  Optional argument,
          defaults to a hash of process id, time, and hostname.
  
      num_vertices : int, optional(default=None)
          Number of vertices to sample. If None, all vertices will be selected
  
      Returns
      -------
      return random vertices from the graph as a dask object
      """
  
      _client = default_client()
  
      def convert_to_cudf(cp_arrays: cp.ndarray) -> cudf.Series:
          """
          Creates a cudf Series from cupy arrays
          """
          vertices = cudf.Series(cp_arrays)
  
          return vertices
  
      def _call_plc_select_random_vertices(
          mg_graph_x, sID: bytes, random_state: int, num_vertices: int
      ) -> cudf.Series:
          cp_arrays = pylibcugraph_select_random_vertices(
              graph=mg_graph_x,
              resource_handle=ResourceHandle(
                  Comms.get_handle(sID).getHandle()
              ),
              random_state=random_state,
              num_vertices=num_vertices,
          )
          return convert_to_cudf(cp_arrays)
  
      def _mg_call_plc_select_random_vertices(
          input_graph,
          client: dask.distributed.client.Client,
          sID: bytes,
          random_state: int,
          num_vertices: int,
      ) -> dask_cudf.Series:
          result = [
              client.submit(
                  _call_plc_select_random_vertices,
                  input_graph._plc_graph[w],
                  sID,
                  hash((random_state, i)),
                  num_vertices,
                  workers=[w],
                  allow_other_workers=False,
                  pure=False,
              )
              for i, w in enumerate(Comms.get_workers())
          ]
          ddf = dask_cudf.from_delayed(
              result, verify_meta=False
          ).persist()
          wait(ddf)
          wait([r.release() for r in result])
          return ddf
  
      ddf = _mg_call_plc_select_random_vertices(
          self,
          _client,
          Comms.get_session_id(),
          random_state,
          num_vertices,
      )
  
      if self.properties.renumbered:
          vertices = ddf.rename("vertex").to_frame()
          vertices = self.renumber_map.unrenumber(vertices, "vertex")
          if len(vertices.columns) == 1:
              vertices = vertices["vertex"]
      else:
          vertices = ddf
  
      return vertices
  
imports: import gc
  from typing import Union
  import warnings
  import cudf
  import cupy
  import dask
  import dask_cudf
  from dask import delayed
  from dask.distributed import wait, default_client
  import numpy
  from pylibcugraph import MGGraph, ResourceHandle, GraphProperties, get_two_hop_neighbors, select_random_vertices
  from cugraph.structure import graph_primtypes_wrapper
  from cugraph.structure.graph_primtypes_wrapper import Direction
  from cugraph.structure.number_map import NumberMap
  from cugraph.structure.symmetrize import symmetrize
  from cugraph.dask.common.part_utils import get_persisted_df_worker_map, persist_dask_df_equal_parts_per_worker
  from cugraph.dask.common.mg_utils import run_gc_on_dask_cluster
  from cugraph.dask import get_n_workers
  import cugraph.dask.comms.comms
label_desc: Use image node_id 17 for calling the simpleDistributedGraphImpl obj's underlying member method code with example usage: obj.select_random_vertices(random_state, num_vertices) and returns: vertices, vertices, convert_to_cudf, ddf