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