def _odds_val(self):
if len(self.odds) == <NUM_LIT:0>:<EOL><INDENT>self.odds = [(<NUM_LIT>, [self.min, self.max])]<EOL><DEDENT>rand_val = rand.random()<EOL>total = <NUM_LIT:0><EOL>for percent,v in self.odds:<EOL><INDENT>if total <= rand_val < total+percent:<EOL><INDENT>found_v = v<EOL>break<EOL><DEDENT>total += percent<EOL><DEDENT>res = None<EOL>if isinstance(v, (tuple,list)):<EOL><INDENT>rand_func = rand.randfloat if type(v[<NUM_LIT:0>]) is float else rand.randint<EOL>if len(v) == <NUM_LIT:2>:<EOL><INDENT>res = rand_func(v[<NUM_LIT:0>], v[<NUM_LIT:1>])<EOL><DEDENT>elif len(v) == <NUM_LIT:1>:<EOL><INDENT>res = v[<NUM_LIT:0>]<EOL><DEDENT><DEDENT>else:<EOL><INDENT>res = v<EOL><DEDENT>return res<EOL>
Determine a new random value derived from the
        defined :any:`gramfuzz.fields.Field.odds` value.

        :returns: The derived value