docstr: Timer for 8-bit bounded values.
  
  Parameters (packed as args)
  ----------
  dt : {uint8, uint16, uint32, unit64}
      output dtype
  max : int
      Upper bound for range. Lower is always 0.  Must be <= 2**bits.
docstr_tok: ["Timer","for","8-bit","bounded","values",".","Parameters","(","packed","as","args",")","--","--","--","--","--","dt",":","{","uint8",",","uint16",",","uint32",",","unit64","}","output","dtype","max",":","int","Upper","bound","for","range",".","Lower","is","always","0",".","Must","be","<","=","2","*","*","bits","."]
code: def time_bounded(self, bitgen, args):
      """
      Timer for 8-bit bounded values.
  
      Parameters (packed as args)
      ----------
      dt : {uint8, uint16, uint32, unit64}
          output dtype
      max : int
          Upper bound for range. Lower is always 0.  Must be <= 2**bits.
      """
      dt, max = args
      if bitgen == "numpy":
          self.rg.randint(0, max + 1, nom_size, dtype=dt)
      else:
          self.rg.integers(0, max + 1, nom_size, dtype=dt)
  
imports: from .common import Benchmark
  import numpy
label_desc: Use image node_id 2 for calling the Bounded obj's underlying member method code with example usage: obj.time_bounded(bitgen, args) without return types