Как назначить переменную string или integer черепахе, используя вероятности переменных в группе/списке? Например, вероятность того, что одна конкретная переменная используется из конкретной группы/списка, равна 0,4. Функция случайным образом выбирает переменную, основанную на вероятности. Мне нужно использовать тот же метод впоследствии, чтобы выбрать переменную (строку) из списка в зависимости от вероятности. В питоне должно быть:Netlogo: Назначить переменную с использованием вероятностей
import random
def random_value(probability_list, values):
r = random.random()
index = 0
while(r >= 0 and index < len(probability_list)):
r -= probability_list[index]
index += 1
value=values[index - 1]
value_index=index-1
return value,value_index
Я попробовал его в NetLogo, как показано ниже (получить сообщение об ошибке, что индекс -1), но есть лучший способ?
globals [random_nr probabilities some_list index]
to initialize-variables
set some_list[]
set probabilities[]
end
to random_pick
set random_nr random-float 1
set probabilities [0.1 0.2 0.4 0.3]
set some_list ["String1" "String2" "String3" "String4"]
set index 0
while [(random_nr >= 0) and (length probabilities < index)] [
set random_nr random_nr - item index probabilities
set index index + 1 ]
set index index - 1
end
Некоторые общие рекомендации: если вы оказываетесь в беспорядке с индексами и циклами, вы, вероятно, ошибаетесь; есть почти всегда лучший, более NetLogo-ish, путь. –