docstr: Return a random value of a variable
  Useful for choosing a variable to split on
  
  Parameters
  ----------
  variable - str
      Name of the variable to split on
  
  Returns
  -------
  Any
  
  Notes
  -----
    - Won't create degenerate splits, all splits will have at least one row on both sides of the split
docstr_tok: ["Return","a","random","value","of","a","variable","Useful","for","choosing","a","variable","to","split","on","Parameters","--","--","--","--","--","variable","-","str","Name","of","the","variable","to","split","on","Returns","--","--","--","-","Any","Notes","--","--","-","-","Wo","n't","create","degenerate","splits",",","all","splits","will","have","at","least","one","row","on","both","sides","of","the","split"]
code: def random_splittable_value(self, variable: int) -> Any:
      """
      Return a random value of a variable
      Useful for choosing a variable to split on
  
      Parameters
      ----------
      variable - str
          Name of the variable to split on
  
      Returns
      -------
      Any
  
      Notes
      -----
        - Won't create degenerate splits, all splits will have at least one row on both sides of the split
      """
      if variable not in self.splittable_variables():
          raise NoSplittableVariableException()
      max_value = self.max_value_of_column(variable)
      candidate = np.random.choice(self.get_column(variable))
      while candidate == max_value:
          candidate = np.random.choice(self.get_column(variable))
      return candidate
  
imports: from operator import gt, le
  from typing import Any, List, Optional, Union
  import numpy
  import pandas
  from .errors import NoSplittableVariableException
  from .splitcondition import SplitCondition
label_desc: Use image node_id 11 for calling the CovariateMatrix obj's underlying member method code with example usage: obj.random_splittable_value(variable) and returns: candidate