Я пытаюсь написать программу SAS, которая имитирует разновидность гольфа для 2 половин по 9 лунок в каждой:
Для 1 половины из 9 лунок:
Начните с девяти двенадцатигранных кубиков со значениями -1,0,1,2,3,4 с постоянными вероятностями.
Выберите кости с наименьшими значениями и сохраните их в массиве.
Удалите столько кубиков, у которых было наименьшее значение (т. е. если 0 был наименьшим значением, а их было 3, для 2-й итерации осталось только 6 кубиков). Повторяйте, пока массив не будет состоять из 9 элементов.
Суммируйте эти результаты вместе, чтобы получить счет за первую половину.
Мне удалось написать следующий код, который брал наименьшее количество очков за каждый раунд, а затем удалял по одному кубику за раунд (всего 9 раундов в 1 половине). Но я не знаю, как его изменить или приспособить, чтобы за раунд можно было снимать различное количество кубиков (таким образом, общее количество раундов ‹= 9).
do i = 1 to 9;
do j = 9 to 1 by -1;
if i - j <= 0 then
dice(j) = rantbl(seed, p1n, p0, p1, p2, p3, p4) - 2;
else dice(j) = 100;
end;
half1(i) = min(of dice1-dice9);
end;
Я думал об определении массива без указанного количества элементов и наличии внешнего цикла do while с конечным условием dim(array) = 9. Но я не уверен, как определить, сколько элементов удалять каждый раз.
Может ли кто-нибудь дать мне несколько советов о том, как подойти к этому? Я учусь на вводном курсе программирования SAS для выпускников, поэтому я все еще новичок в этом.
Спасибо!