class_docstr: Distributional Q-function with discrete actions.
  
  Args:
      model (chainer.Link):
          Link that is callable and outputs atoms for each action.
      z_values (ndarray): Returns represented by atoms. Its shape must be
          (n_atoms,).
class_docstr_tok: ["Distributional","Q-function","with","discrete","actions",".","Args",":","model","(","chainer.Link",")",":","Link","that","is","callable","and","outputs","atoms","for","each","action",".","z_values","(","ndarray",")",":","Returns","represented","by","atoms",".","Its","shape","must","be","(","n_atoms",",",")","."]
code: def __init__(self, model, z_values):
      super().__init__(model=model)
      self.add_persistent("z_values", z_values)
  
imports: import chainer
  from chainer import cuda
  from chainer import functions
  from chainer import links
  import numpy
  import chainerrl
  from chainerrl.action_value import DiscreteActionValue
  from chainerrl.action_value import DistributionalDiscreteActionValue
  from chainerrl.action_value import QuadraticActionValue
  from chainerrl.functions.lower_triangular_matrix import lower_triangular_matrix
  from chainerrl.links.mlp import MLP
  from chainerrl.links.mlp_bn import MLPBN
  from chainerrl.q_function import StateQFunction
  from chainerrl.recurrent import RecurrentChainMixin
label_desc: Use image node_id 1 to create a new DistributionalSingleModelStateQFunctionWithDiscreteAction object from inherited base classes: chainer, StateQFunction, RecurrentChainMixin with example: obj = DistributionalSingleModelStateQFunctionWithDiscreteAction(model, z_values)