class_docstr: Generator of the LaserBeam objects for the LaserBeamAttack purpose
class_docstr_tok: ["Generator","of","the","LaserBeam","objects","for","the","LaserBeamAttack","purpose"]
docstr: Generate random array of ones that will decide which parameters of a laser beam will be updated:
      wavelength, angle, bias and width.
  
  :returns: Random array of ones (mask).
docstr_tok: ["Generate","random","array","of","ones","that","will","decide","which","parameters","of","a","laser","beam","will","be","updated",":","wavelength",",","angle",",","bias","and","width",".",":","returns",":","Random","array","of","ones","(","mask",")","."]
code: def _random_direction() -> np.ndarray:
      """
      Generate random array of ones that will decide which parameters of a laser beam will be updated:
          wavelength, angle, bias and width.
  
      :returns: Random array of ones (mask).
      """
      q_mask = np.asfarray(
          [
              [1, 0, 0, 0],
              [0, 1, 0, 0],
              [0, 0, 1, 0],
              [0, 0, 0, 1],
              [1, 1, 0, 0],
              [1, 0, 1, 0],
              [1, 0, 0, 1],
              [0, 1, 1, 0],
              [0, 1, 0, 1],
              [0, 0, 1, 1],
          ]
      )
  
      mask = q_mask[np.random.choice(len(q_mask))]
      return mask
  
imports: import logging
  from typing import Callable, List, Optional, Tuple, Union, Any
  import numpy
  from art.attacks.attack import EvasionAttack
  from art.attacks.evasion.laser_attack.algorithms import greedy_search
  from art.attacks.evasion.laser_attack.utils import AdversarialObject, AdvObjectGenerator, DebugInfo, ImageGenerator, Line, wavelength_to_rgb
label_desc: Use image node_id 3 for calling the LaserBeamGenerator obj's underlying member method code with example usage: obj._random_direction() and returns: mask