subroutine pick_elec_pair_uniform_guga(nI, spin_orbs, sym_prod, sum_ml, &
temp_pgen)
! pick two occupied "spin orbitals" uniform-randomly
integer, intent(in) :: nI(nel)
integer, intent(out) :: spin_orbs(2), sym_prod, sum_ml
integer :: i, ind(2)
real(dp), intent(out) :: temp_pgen
i = 1 + int(ElecPairs * genrand_real2_dSFMT())
ind(2) = ceiling((1 + sqrt(1 + 8 * real(i, dp))) / 2)
ind(1) = i - ((ind(2) - 1) * (ind(2) - 2)) / 2
spin_orbs = nI(ind)
sym_prod = RandExcitSymLabelProd(SpinOrbSymLabel(spin_orbs(1)), &
SpinOrbSymLabel(spin_orbs(2)))
temp_pgen = 1.0_dp / real(ElecPairs, dp)
sum_ml = sum(G1(spin_orbs)%ml)
end subroutine pick_elec_pair_uniform_guga