Генерация случайных чисел, каждое минимального размера

Не уверен, что этот вопрос уже задавался, хотя похожий вопрос был задан здесь. По сути, я пытаюсь генерировать случайные целые числа минимального размера, которые в сумме дают определенное значение (инвариантом является то, что сумма / (количество рандомов, которое вы хотите) больше минимального значения. Вот моя печальная попытка:

import java.util.Arrays;
import java.util.Random;

public class ScratchWork {

    private static Random rand = new Random();


    public static void main(String[] args) {
            int[] randoms = genRandoms(1000, 10, 30);
            for (int i = 0; i n/numberOfRandoms) throw new UnsupportedOperationException();
        int[] intRandArray = {0};
        while (sum(intRandArray) != n) {
            ////////////////////////
            // See https://stackoverflow.com/questions/2640053/getting-n-random-numbers-that-the-sum-is-m
            Double[] randArray = new Double[numberOfRandoms];
            double workerSum = 0;
            for (int i = 0; i

Это не элегантный и не высокопроизводительный способ сделать это... Он также, похоже, не работает хорошо (если вообще работает), когда передается, скажем, (100,10,10), что позволяет использовать в массиве только число 10. Распределение случайных чисел также довольно плохое.

Есть ли элегантный подход к этому?

Кроме того, моя конечная цель - реализовать это на Objective-C, хотя я все еще только осваиваю этот язык, поэтому любые советы по его использованию были бы очень признательны.

5
задан Community 23 May 2017 в 12:03
поделиться