Teilen einer Zahl in kleinere Zufallszahlen

Also, was ich brauche, ist im Grunde im Thema beschrieben.

Als ob ich Nummer 12 und die Anzahl der Teile, in die es aufgeteilt werden soll, einfügen würde, möchte ich, dass es so etwas wie (mit 4 Teilen) 8, 2, 1, 1 zurückgibt. Aber nicht doppelt, weil ich die Werte als int brauche.
Ich hatte zuvor eine Antwort gefunden, aber es funktionierte nur mit Doppel. nicht ints.
(das ist das, was ich gefunden habe)

public double[] divideUniformlyRandomly(double number, int part) {
    double uniformRandoms[] = new double[part];
    Random random = new Random();
    double mean = number / part;
    double sum = 0.0;
    for (int i=0; i<part / 2; i++) {
        uniformRandoms[i] = random.nextDouble() * mean;
        uniformRandoms[part - i - 1] = mean + random.nextDouble() * mean;
        sum += uniformRandoms[i] + uniformRandoms[part - i -1];
    }
    uniformRandoms[(int)Math.ceil(part/2)] = uniformRandoms[(int)Math.ceil(part/2)] + number - sum;
    return uniformRandoms;

Ich hatte versucht, diesen Code so zu ändern, dass er mit Ints funktioniert:

public int[] divide(int number) {
    int part = getDivider(number);
    int uniformRandoms[] = new int[part];
    Random random = new Random();
    int mean = number / part;
    int sum = 0;
    for (int i=0; i<part / 2; i++) {,
        uniformRandoms[i] = random.nextInt() * mean;
        uniformRandoms[part - i - 1] = mean + random.nextInt() * mean;
        sum += uniformRandoms[i] + uniformRandoms[part - i -1];
    }
    uniformRandoms[(int)Math.round(part/2)] = uniformRandoms[(int)Math.round(part/2)] + number - sum;
    for(int i : uniformRandoms)
        System.out.println(i);
    return uniformRandoms;
}

Aber wenn das mit der Nummer: 512 und mit 10 Teilen (getDivider () gibt 10 zurück) ausgeführt wird, wird Folgendes ausgegeben:

-1058809647, -2102647561, 469849949, 1627965716, -290084223, -33347991

Und noch viel mehr solcher Zahlen.

Vielen Dank.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage