code: def test_set_random_states():
      # Linear Discriminant Analysis doesn't have random state: smoke test
      _set_random_states(LinearDiscriminantAnalysis(), random_state=17)
  
      clf1 = Perceptron(random_state=None)
      assert clf1.random_state is None
      # check random_state is None still sets
      _set_random_states(clf1, None)
      assert isinstance(clf1.random_state, int)
  
      # check random_state fixes results in consistent initialisation
      _set_random_states(clf1, 3)
      assert isinstance(clf1.random_state, int)
      clf2 = Perceptron(random_state=None)
      _set_random_states(clf2, 3)
      assert clf1.random_state == clf2.random_state
  
      # nested random_state
  
      def make_steps():
          return [
              ("sel", SelectFromModel(Perceptron(random_state=None))),
              ("clf", Perceptron(random_state=None)),
          ]
  
      est1 = Pipeline(make_steps())
      _set_random_states(est1, 3)
      assert isinstance(est1.steps[0][1].estimator.random_state, int)
      assert isinstance(est1.steps[1][1].random_state, int)
      assert (
          est1.get_params()["sel__estimator__random_state"]
          != est1.get_params()["clf__random_state"]
      )
  
      # ensure multiple random_state parameters are invariant to get_params()
      # iteration order
  
      class AlphaParamPipeline(Pipeline):
          def get_params(self, *args, **kwargs):
              params = Pipeline.get_params(
                  self, *args, **kwargs
              ).items()
              return OrderedDict(sorted(params))
  
      class RevParamPipeline(Pipeline):
          def get_params(self, *args, **kwargs):
              params = Pipeline.get_params(
                  self, *args, **kwargs
              ).items()
              return OrderedDict(sorted(params, reverse=True))
  
      for cls in [AlphaParamPipeline, RevParamPipeline]:
          est2 = cls(make_steps())
          _set_random_states(est2, 3)
          assert (
              est1.get_params()["sel__estimator__random_state"]
              == est2.get_params()["sel__estimator__random_state"]
          )
          assert (
              est1.get_params()["clf__random_state"]
              == est2.get_params()["clf__random_state"]
          )
  
file_path: scikit-learn/sklearn/ensemble/tests/test_base.py
imports: from collections import OrderedDict
  import numpy
  from sklearn.datasets import load_iris
  from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
  from sklearn.ensemble import BaggingClassifier
  from sklearn.ensemble._base import _set_random_states
  from sklearn.feature_selection import SelectFromModel
  from sklearn.linear_model import Perceptron
  from sklearn.pipeline import Pipeline
label_desc: Use image node_id 2 for calling a global function with example usage: test_set_random_states() and returns: list, OrderedDict, OrderedDict