code: def test_linear_decay_epsilon_greedy(self):
      random_action_func_count = [0]
      greedy_action_func_count = [0]
  
      def random_action_func():
          random_action_func_count[0] += 1
          return 0
  
      def greedy_action_func():
          greedy_action_func_count[0] += 1
          return 0
  
      explorer = epsilon_greedy.LinearDecayEpsilonGreedy(
          1.0, 0.1, 50, random_action_func
      )
  
      explorer.logger.addHandler(logging.StreamHandler())
      explorer.logger.setLevel(logging.DEBUG)
  
      assert pytest.approx(explorer.epsilon) == 1.0
  
      for t in range(100):
          explorer.select_action(t, greedy_action_func)
  
      assert (
          random_action_func_count[0] + greedy_action_func_count[0]
          == 100
      )
  
      assert pytest.approx(explorer.epsilon) == 0.1
  
file_path: pfrl/tests/explorers_tests/test_epsilon_greedy.py
imports: import logging
  import pytest
  from pfrl.explorers import epsilon_greedy
label_desc: Use image node_id 1 for calling the TestEpsilonGreedy obj's underlying member method code with example usage: obj.test_linear_decay_epsilon_greedy() and returns: int, int