2017-02-16 6 views
-2

У меня есть массив случайных чисел, и я хочу продолжать изменять значения массива до тех пор, пока не достигнет определенного среднего значения, которое я проверяю в цикле.Лучшее решение для генерации случайных чисел до достижения определенной суммы

частичный код:

числа [] является массив целых чисел и чисел Random [] является случайный массив

while(avg!=avg(numbers)){ 
    for(...){ 
    numbers[i] = numbersRandom[i].nextInt((max-min)+1)+min; 
    } 
} 
+0

Да, но это очень медленно. Лучше рассчитать последнее значение (ы), чтобы у вас была необходимая сумма. Это может быть намного быстрее. Кстати, быстрее вычислять сумму, а не среднюю, и добивается того же результата. –

+1

Итак, вы предлагаете мне взять случайный массив и просто изменить последнее число или два вручную в зависимости от суммы, которая мне нужна? – user4655509

+0

И у кого бы то ни было проблемы с вопросом, по крайней мере, есть вежливость, чтобы сообщить мне, что не так! – user4655509

ответ

0

Попробуйте

  1. Заполните массив в среднем требуется : {1.5, 1.5, ... 1.5}.

  2. Выберите случайное значение.

  3. Добавьте это случайное значение к произвольно выбранному элементу массива; вычесть одно и то же случайное значение из другого случайно выбранного элемента массива.

  4. Если весь массив недостаточно случайный, вернитесь к 2. В противном случае остановите.

Этот метод сохраняет среднее значение массива одинаковым для каждого повторения. На шаге 4 вы можете проверить стандартное отклонение.