2014-02-05 4 views
0

Я пытаюсь написать эту программу для простого симулятора боя, и задача, которую я должен выполнить, - попросить пользователя процент низких, средних и высоких атак в раунде боевых действий.Изменение вероятности в java

Так, например, пользователь вводит низкие = 50%, средний = 30% и высокий = 20%. Теперь мой вопрос возникает здесь. Как сделать так, чтобы в один раунд программа печатала низкие 50% времени, в среднем 30% времени и в 20% случаев?

+2

Вам придется опубликовать код примера для тех, кто поможет вам в этом. –

ответ

1

Не давая вам точный код Java, вот что вам нужно сделать:

  1. Создать набор интервалов. В вашем случае это [0, 0.5>, [0.5, 0.8>; [0.8, 1.0>.
  2. Создайте случайное число от 0 до 1
  3. Посмотрите, в каком интервалах он попадет. Он попадет в первый интервал 50% времени, второй интервал - 30% от времени, а третий интервал - 20% от время

Вы можете понять это здесь?

Дополнительная информация: в вашем случае значения, вводимые пользователем, составляют до 100%. В общем, это может быть неверно; то сначала вы вычисляете «кажущиеся интервалы» и, наконец, масштабируете их до максимума 1. Предположим, пользователь ввел 50,30,30% (не может выполнять свою математику ...). Ваши интервалы были бы

0, .5 
.5, .8 
.8, 1.1 

И вы должны разделить все на 1.1, чтобы получить правильные интервалы. ИЛИ вы можете умножить свое случайное число на 1.1.

+1

Поскольку случайное число находится в диапазоне [0, 1>, не должно быть ваших интервалов [0, 0.5> [0.5, 0.8> [0.8, 1>? – ILMTitan

+0

@ILMTitan вы правы - отредактированы. – Floris

1

Простейшими я могу думать о том, чтобы создать массив с равной пропорцией ваших требований (здесь я создал 10 строк с 5 минимумам, 3 сред и 2 максимумами)

String[] probabilities = { "low", "low", "low", "low", "low", "medium", "medium", "medium", "high", "high }; 

Затем используйте случайное число выберите один элемент из массива

Random random = new Random(); // might want to give it a seed here 
int randomIndex = random.nextInt(probabilities.length); 
String probability = probabilities[randomIndex]; 

С большой выборкой это должно дать вам желаемое распределение.

+0

приятное и легкое решение – Leo

Смежные вопросы