# Efficient method to slice an int64 to parts ?

i have a big number that i want to slice into 10 parts for example, each part will be almost equel...

now don't reply with "just devide it by 10", no that's not the point..

so lets say for example i want to devide the number 3,480,352 into 10 parts, it will look like this:

0. 339.9 (kb)
1. 361.1 (kb)
2. 357.2 (kb)
3. 353.9 (kb)
4. 353.9 (kb)
5. 350.4 (kb)
6. 350.4 (kb)
7. 310.4 (kb)
8. 260.2 (kb)
9. 361.1 (kb)

the example i showed was taken from a rea-world scenario.
LVL 4
###### Who is Participating?

Commented:
Since you don't specify a programming language I'll use pseudo-code. I'll use rand(0,10) to mean a random integer between 0 and 10.

integer num = 3480352;
integer random;
integer array[10];
integer max_rand;

``````for i from 1 to 9 //do this for the first 9 parts
max_rand = floor(num/30); //floor means round down, the 30 should be set to whatever you want
random = rand(0,max_rand*2) - max_rand; //This generates a number from -max_rand to max_rand
array[i] = num/(10-i+1) + random; //divide by 10 the first time, then by 9, then 8 etc
num = num - array[i]; Take it out of the old number
end for
array[10] = num; //put the rest in the last one
``````
0

Commented:
>>i f i devide by 2, it will look like this:

>>0. 346.6 (kb)
>>1. 2.96 (mb)

why?

for one, those aren't close to being equal
and even if they were closer,  why isn't dividing evenly by 2 or 10 acceptable?

are you just looking for semi-random divisions?
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.