Mercurial > forge
changeset 2066:07295c2eb4d0 octave-forge
Fix docs to reflect correct range; fix tests to check correct range;
add support for negative scalar range returning values between [m+1,0]
author | pkienzle |
---|---|
date | Wed, 12 Oct 2005 03:01:22 +0000 |
parents | 54d8a0823ae8 |
children | 2b572b0b5127 |
files | main/comm/randint.m |
diffstat | 1 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/main/comm/randint.m Mon Oct 10 07:14:13 2005 +0000 +++ b/main/comm/randint.m Wed Oct 12 03:01:22 2005 +0000 @@ -25,9 +25,10 @@ ## ## The range in which the integers are generated will is determined by ## the variable @var{range}. If @var{range} is an integer, the value will -## lie in the range [0,@var{range}]. If @var{range} contains two elements -## the intgers will lie between these two elements. By default @var{range} -## is assumed to be [0:1]. +## lie in the range [0,@var{range}-1], or [@var{range}+1,0] if @var{range} +## is negative. If @var{range} contains two elements the intgers will lie +## within these two elements, inclusive. By default @var{range} is +## assumed to be [0:1]. ## ## The variable @var{seed} allows the random number generator to be seeded ## with a fixed value. The initial seed will be restored when returning. @@ -55,7 +56,11 @@ ## Check range if (length (range) == 1) - range = [0, range-1]; + if (range < 0) + range = [range+1, 0]; + else + range = [0, range-1]; + endif elseif ( prod (size (range)) != 2) error ("randint: range must be a 2 element vector"); endif @@ -86,6 +91,10 @@ %!assert (size(a1) == [n, n] && size(a2) == [n, n]); %!assert (max ([a1(:); a2(:)]) <= 1 && min([a1(:); a2(:)]) >= 0); %!assert (size(a3) == [n, n] && size(a4) == [n, n]); -%!assert (max (a3(:)) <= m && min(a3(:)) >= 0); +%!assert (max (a3(:)) < m && min(a3(:)) >= 0); %!assert (max (a4(:)) <= m && min(a4(:)) >= -m); %!assert (a5(:) == a6(:)); + +%!test +%! a = randint(10,10,-32); +%! assert (max(a(:)) <= 0 && min(a(:)) > -32);