Random range

So it seems that “Random” (i.e. nValue = Random(4);) will provide a random number that will necessarily start from 0.

Can’t I choose a random range instead? I’d like my random range to be between 30-90…is that possible? I’d imagine it should be but I couldn’t find it in the nwn lexicon :persevere:

Add the randomized number to the base, and you’ve got your random range between 30 and 90:

int nValue = 30+Random(61);

Be aware that the first number that can be returned is a zero; so to have a range from (0-60) you need to give Random() a sixty-one as a parameter rather than a sixty. (otherwise, possible results would be 0-59, not 0-60).

1 Like

smacks self in forehead

That was mathematically easier than I thought.

Much appreciated, sorry for the n00biness.

1 Like

Be also aware that while being a tremendous resource, the Lexicon is not error-free. For example, the Random() page states:

Returns an integer between 0 and nMaxInteger - 1. The maximum value this can return is 65,534 (one less than the maximum value of a signed integer, 65,535).

While in fact Random() can only return values from [0, 32767) or (-32767, 0] ranges. Square bracket means inclusion, parenthesis - exclusion.

Check my projects if you require some more sophisticated random functions.

1 Like

The Lexicon is a wiki, so feel free to correct errors as you find them.

1 Like

I know, but editing pages requires an account, however the sign-up functions seem to be disabled.

On a side note, just today I also found that

GetSubString(sString, iStart, -1)

returns everything from sStart to the end of sString. No need for

GetSubString(sString, iStart, GetStringLength(sString))

or similar. This is also not present on the function’s lexicon page.

1 Like