def _find_random_adversarial(self, x: np.ndarray, y: np.ndarray) -> np.ndarray:
        """
        Find an adversarial example by random search.

        :param x: Current example.
        :param y: True label of `x`.
        :return: A random adversarial example for `x`.
        """
        nb_calls = 0
        step_size = 0.02
        x_perturbed = x

        while not self._is_adversarial(x_perturbed, y):
            nb_calls += 1
            perturbation = np.random.normal(size=x.shape).astype(ART_NUMPY_DTYPE)
            x_perturbed = x + nb_calls * step_size * perturbation
            x_perturbed = np.clip(x_perturbed, a_min=self.clip_min, a_max=self.clip_max)

        self.nb_calls += nb_calls

        return x_perturbed

        Find an adversarial example by random search.

        :param x: Current example.
        :param y: True label of `x`.
        :return: A random adversarial example for `x`.
        
art/attacks/evasion/geometric_decision_based_attack.py