Date: 2018/07/10 15:34:41 UTC-07:00
Type: Denizen Script
DUL_WRCG:
type: procedure
debug: false
DUL:
author:
- Anthony
- BloodEko
name:
- Weighted Random Choice Generator
description:
- Supply a list of weight/return values and have one of the values returned to you randomly based on weight.
usage:
- <proc[DUL_WRCG].context[weight/return|...]>
example:
- give <proc[DUL_WRCG].context[10/i@apple|1/i@gold_ingot|20/i@stone]>
script:
- define list <def[raw_context]>
- define weightList <def[list].parse[before[/]]>
- define weight <def[weightList].sum>
- define number <util.random.int[1].to[%weight%]>
- define hv 0
- foreach <def[list]>:
- define ov %hv%
- define lv <def[ov].add[1]>
- define hv <def[ov].add[<def[weightList].get[%loop_index%]>]>
- if %number% >= %lv% && %number% <= %hv% {
- determine '<def[value].after[/]>'
}