I think that you need to reconsider your conditions. The smallest number in your candidate set is 1, so if you sample 100 1's they will add to 100 which is greater than 50. So to have a set of numbers that sums to 50 you will need to either include negative numbers, 0's, or sample fewer than 50 values.
If you really meant sum to 500 or sample 10 numbers (still selecting any single number over 50 will make the sum to large) then this becomes possible. There are a few ways to do it, which is best depends on what you are really trying to accomplish (and note that with the constraint, the values will not be iid). One option is rejection sampling: take a sample, if it sums correctly then you are done, if not then throw out that sample and try a new one. This will be very inefficient, but is easy enough to code and with a fast enough computer may be acceptable. Another option is adjustment: take a sample and compute the sum, if it is to low then add the difference to one of your values (lowest, chosen at random, other) or split it up and add to multiple values. If the sum is too high, then subtract from your numbers until the sum is correct (checking that you don't go below any lower bounds). Another option is to round values generated from a Dirichlet distribution multiplied by your total (you may need to round one value differently than the default). Another option is to consider it a balls and urns problem: You have 500 balls (assuming the true sum is to be 500) that you want distributed into 100 urns. If each urn needs at least 1 ball (minimum value of 1) then put 1 ball in each urn, then for the remaining 400 balls, randomly choose an urn to put each into. Then count the number of balls in each urn and those are your 100 numbers that sum to 500 (as long as no balls bounced off the lip of the urn and rolled under the couch). There are probably other ways, but these are some things to get you started. On Tue, Jul 19, 2016 at 11:41 AM, Frederic Ntirenganya <ntfr...@gmail.com> wrote: > Hi Guys, > I am trying to sample 100 numbers from 1:100 > i did it like this: > > sample(1:100,100, replace= TRUE) > but i want again include a constraint that their sum must be equal to 50 > > How could I do it? > > Cheers > > Frederic Ntirenganya > Maseno University, > African Maths Initiative, > Kenya. > Mobile:(+254)718492836 > Email: fr...@aims.ac.za > https://sites.google.com/a/aims.ac.za/fredo/ > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. -- Gregory (Greg) L. Snow Ph.D. 538...@gmail.com ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.