Netlogo: Asigna variables usando probabilidades

¿Cómo asignar una cadena o variable entera a la tortuga, usando las probabilidades de las variables en un grupo / lista? Por ejemplo, es 0.4 probabilidad de que se use una variable específica de un grupo / lista específica. La función selecciona aleatoriamente la variable en función de la probabilidad. Necesito usar el mismo método después para elegir una variable (cadena) de una lista de acuerdo con la probabilidad. En python debería ser:

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

Lo probé en Netlogo como a continuación (obtengo un error de que el índice es -1) pero ¿hay una mejor manera?

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta