code: def _get_seeds(self, ctx: Context):
      if ctx.cipher.allow_custom_random_seed:
          seed = ctx.cipher.get_custom_random_seed()
          random_state = random.Random(seed)
          yield random_state.getrandbits(64)
          while True:
              yield random_state.getrandbits(64)
      else:
          while True:
              random_seed = os.urandom(8)
              yield int.from_bytes(random_seed, byteorder="big")
  
file_path: FATE/python/fate/ml/ensemble/algo/secureboost/hetero/host.py
imports: import random
  import os
  from fate.ml.ensemble.learner.decision_tree.hetero.host import HeteroDecisionTreeHost
  from fate.ml.ensemble.algo.secureboost.hetero._base import HeteroBoostingTree
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from fate.ml.ensemble.utils.binning import binning
  from fate.ml.ensemble.algo.secureboost.common.predict import predict_leaf_host
  from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import GUEST_FEAT_ONLY, ALL_FEAT
  import logging
label_desc: Use image node_id 3 for calling the HeteroSecureBoostHost obj's underlying member method code with example usage: obj._get_seeds(ctx) without return types