The basic sample function can do this. I'm not exactly sure what you want to achieve but this is an example:
numbers<-c(7,5,3,3,2,1,1,1,1)
samp<-sample(1:length(numbers), 100000, T, numbers)
table(samp)/ length(samp)
#> samp
#> 1 2 3 4 5 6 7 8 9
#> 0.29342 0.20677 0.12728 0.12412 0.08271 0.04187 0.04086 0.04175 0.04122
numbers/sum(numbers)
#> [1] 0.29166667 0.20833333 0.12500000 0.12500000 0.08333333 0.04166667 0.04166667
#> [8] 0.04166667 0.04166667
Created on 2021-01-22 by the reprex package (v0.3.0)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…