code: def _draw(self, size=1, **kwargs):
          
          # draw masses
          try:
              mass1 = kwargs['mass1']
          except KeyError:
              mass1 = self.mass1_distr.rvs(size=size)['mass1']
          try:
              mass2 = kwargs['mass2']
          except KeyError:
              mass2 = self.mass2_distr.rvs(size=size)['mass2']
          # draw angles
          try:
              phi_a = kwargs['phi_a']
          except KeyError:
              phi_a = self.phia_distr.rvs(size=size)['phi_a']
          try:
              phi_s = kwargs['phi_s']
          except KeyError:
              phi_s = self.phis_distr.rvs(size=size)['phi_s']
          # draw chi_eff, chi_a
          try:
              chi_eff = kwargs['chi_eff']
          except KeyError:
              chi_eff = self.chieff_distr.rvs(size=size)['chi_eff']
          try:
              chi_a = kwargs['chi_a']
          except KeyError:
              chi_a = self.chia_distr.rvs(size=size)['chi_a']
          # draw xis
          try:
              xi1 = kwargs['xi1']
          except KeyError:
              xi1 = self.xi1_distr.rvs(size=size)['xi1']
          try:
              xi2 = kwargs['xi2']
          except KeyError:
              xi2 = self.xi2_distr.rvs(size=size)['xi2']
          dtype = [(p, float) for p in self.params]
          arr = numpy.zeros(size, dtype=dtype)
          arr['mass1'] = mass1
          arr['mass2'] = mass2
          arr['phi_a'] = phi_a
          arr['phi_s'] = phi_s
          arr['chi_eff'] = chi_eff
          arr['chi_a'] = chi_a
          arr['xi1'] = xi1
          arr['xi2'] = xi2
          return arr
docs: Draws random samples without applying physical constrains.