Generate a series of random numbers that add up to N in c#

后端 未结 16 742

How do I generate 30 random numbers between 1-9, that all add up to 200 (or some arbitrary N), in C#?

I\'m trying to generate a string of digits that can add togethe

16条回答
  •  臣服心动
    2020-12-15 22:46

    This method will return 30 random numbers that add up to an arbitraryN. It is possible do, to have some 0 values. if that is not feasible, just initialize the array all to one's and if the sum is greater to the arbitraryN, set vals[nextIdx] to 1 instead of 0. Hope this helps.

        private int[] getNumbers(int arbitraryN) {
            int[] vals = new int[30];
            int nextIdx = 0;
            int nextNumber=0;
            Random r = new Random();
            if (arbitraryN > 270 || arbitraryN < 30)
                throw new Exception("Not a Valid number");
            while (vals.Sum() < arbitraryN)
            {
                nextNumber = r.Next(1, 9);
                nextIdx = r.Next(29);
                vals[nextIdx] = nextNumber;
                if (vals.Sum() > arbitraryN)
                {
                    vals[nextIdx] = 0;
                    vals[nextIdx] = 270 - vals.Sum();
                    break;
                }
            }
            return vals;
        }
    

提交回复
热议问题