docstr: Generate random shared tensor of given size and sharing of its wraps
docstr_tok: ["Generate","random","shared","tensor","of","given","size","and","sharing","of","its","wraps"]
code: def wrap_rng(self, size, device=None):
      """Generate random shared tensor of given size and sharing of its wraps"""
      num_parties = comm.get().get_world_size()
      r = [
          generate_random_ring_element(size, device=device)
          for _ in range(num_parties)
      ]
      theta_r = count_wraps(r)
  
      shares = comm.get().scatter(r, 0)
      r = ArithmeticSharedTensor.from_shares(shares, precision=0)
      theta_r = ArithmeticSharedTensor(theta_r, precision=0, src=0)
  
      return r, theta_r
  
file_path: CrypTen/crypten/mpc/provider/tfp_provider.py
imports: import crypten.communicator
  import torch
  from crypten.common.rng import generate_kbit_random_tensor, generate_random_ring_element
  from crypten.common.util import count_wraps, torch_stack
  from crypten.mpc.primitives import ArithmeticSharedTensor, BinarySharedTensor
  from .provider import TupleProvider
label_desc: Use image node_id 4 for calling the TrustedFirstParty obj's underlying member method code with example usage: obj.wrap_rng(size, device) and returns: r,  theta_r