C# dividing a number into 24 random pieces/shares

Hey guys,

I'm trying to figure out the easiest way to divide a number into 24 parts, but completely random.

For example, if the number is 15,500 how would I be able to divide it up randomly into 24 parts like this:

1. 253
2. 442
3. 101
4. 788
5. 2,232
etc....

The sum of these 24 random pieces should = 15,500.

Any thoughts?
mcaincAsked:
Who is Participating?
 
Meir RivkinConnect With a Mentor Full stack Software EngineerCommented:
here it is:
        static Random rand = new Random();
        public static IEnumerable<int> Split(Int32 val, int parts)
        {
            int left = val;
            for (int i = 0; i < parts - 1; i++)
            {
                var curr = rand.Next(1, left / parts);
                yield return curr;
                left -= curr;
            }
            yield return left;
        }


        static void Main(string[] args)
        {
            Int32 val = 15500;
            var res = Split(val, 24);
            int sum = 0;
            foreach (var item in res)
            {
                Console.WriteLine(item);
                sum += item;
            }
            var match = (sum == val);

        }

Open in new window

0
 
Meir RivkinFull stack Software EngineerCommented:
should they all be different?
0
 
mcaincAuthor Commented:
yeah, all 24 pieces should be different random numbers that all add up to the desired larger number
0
 
mcaincAuthor Commented:
nice!!! thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.