This file is indexed.

/usr/share/octave/packages/statistics-1.3.0/random.m is in octave-statistics 1.3.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
## Copyright (C) 2007 Soren Hauberg <soren@hauberg.org>
##
## This program is free software; you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free Software
## Foundation; either version 3 of the License, or (at your option) any later
## version.
##
## This program is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
## details.
##
## You should have received a copy of the GNU General Public License along with
## this program; if not, see <http://www.gnu.org/licenses/>.

## -*- texinfo -*-
## @deftypefn {Function File} @var{r} = random(@var{name}, @var{arg1})
## @deftypefnx{Function File} @var{r} = random(@var{name}, @var{arg1}, @var{arg2})
## @deftypefnx{Function File} @var{r} = random(@var{name}, @var{arg1}, @var{arg2}, @var{arg3})
## @deftypefnx{Function File} @var{r} = random(@var{name}, ..., @var{s1}, ...)
## Generates pseudo-random numbers from a given one-, two-, or three-parameter
## distribution.
##
## The variable @var{name} must be a string that names the distribution from
## which to sample.  If this distribution is a one-parameter distribution @var{arg1}
## should be supplied, if it is a two-paramter distribution @var{arg2} must also
## be supplied, and if it is a three-parameter distribution @var{arg3} must also
## be present.  Any arguments following the distribution paramters will determine
## the size of the result.
##
## As an example, the following code generates a 10 by 20 matrix containing
## random numbers from a normal distribution with mean 5 and standard deviation
## 2.
## @example
## R = random("normal", 5, 2, [10, 20]);
## @end example
##
## The variable @var{name} can be one of the following strings
## 
## @table @asis
## @item  "beta"
## @itemx "beta distribution"
## Samples are drawn from the Beta distribution.
## @item  "bino"
## @itemx "binomial"
## @itemx "binomial distribution"
## Samples are drawn from the Binomial distribution.
## @item  "chi2"
## @itemx "chi-square"
## @itemx "chi-square distribution"
## Samples are drawn from the Chi-Square distribution.
## @item  "exp"
## @itemx "exponential"
## @itemx "exponential distribution"
## Samples are drawn from the Exponential distribution.
## @item  "f"
## @itemx "f distribution"
## Samples are drawn from the F distribution.
## @item  "gam"
## @itemx "gamma"
## @itemx "gamma distribution"
## Samples are drawn from the Gamma distribution.
## @item  "geo"
## @itemx "geometric"
## @itemx "geometric distribution"
## Samples are drawn from the Geometric distribution.
## @item  "hyge"
## @itemx "hypergeometric"
## @itemx "hypergeometric distribution"
## Samples are drawn from the Hypergeometric distribution.
## @item  "logn"
## @itemx "lognormal"
## @itemx "lognormal distribution"
## Samples are drawn from the Log-Normal distribution.
## @item  "nbin"
## @itemx "negative binomial"
## @itemx "negative binomial distribution"
## Samples are drawn from the Negative Binomial distribution.
## @item  "norm"
## @itemx "normal"
## @itemx "normal distribution"
## Samples are drawn from the Normal distribution.
## @item  "poiss"
## @itemx "poisson"
## @itemx "poisson distribution"
## Samples are drawn from the Poisson distribution.
## @item  "rayl"
## @itemx "rayleigh"
## @itemx "rayleigh distribution"
## Samples are drawn from the Rayleigh distribution.
## @item  "t"
## @itemx "t distribution"
## Samples are drawn from the T distribution.
## @item  "unif"
## @itemx "uniform"
## @itemx "uniform distribution"
## Samples are drawn from the Uniform distribution.
## @item  "unid"
## @itemx "discrete uniform"
## @itemx "discrete uniform distribution"
## Samples are drawn from the Uniform Discrete distribution.
## @item  "wbl"
## @itemx "weibull"
## @itemx "weibull distribution"
## Samples are drawn from the Weibull distribution.
## @end table
## @seealso{rand, betarnd, binornd, chi2rnd, exprnd, frnd, gamrnd, geornd, hygernd,
## lognrnd, nbinrnd, normrnd, poissrnd, raylrnd, trnd, unifrnd, unidrnd, wblrnd}
## @end deftypefn

function retval = random(name, varargin)
  ## General input checking
  if (nargin < 2)
    print_usage();
  endif
  if (!ischar(name))
    error("random: first input argument must be a string");
  endif
  
  ## Select distribution
  switch (lower(name))
    case {"beta", "beta distribution"}
      retval = betarnd(varargin{:});
    case {"bino", "binomial", "binomial distribution"}
      retval = binornd(varargin{:});
    case {"chi2", "chi-square", "chi-square distribution"}
      retval = chi2rnd(varargin{:});
    case {"exp", "exponential", "exponential distribution"}
      retval = exprnd(varargin{:});
    case {"ev", "extreme value", "extreme value distribution"}
      error("random: distribution type '%s' is not yet implemented", name);
    case {"f", "f distribution"}
      retval = frnd(varargin{:});
    case {"gam", "gamma", "gamma distribution"}
     retval = gamrnd(varargin{:});
    case {"gev", "generalized extreme value", "generalized extreme value distribution"}
      error("random: distribution type '%s' is not yet implemented", name);
    case {"gp", "generalized pareto", "generalized pareto distribution"}
      error("random: distribution type '%s' is not yet implemented", name);
    case {"geo", "geometric", "geometric distribution"}
      retval = geornd(varargin{:});
    case {"hyge", "hypergeometric", "hypergeometric distribution"}
      retval = hygernd(varargin{:});
    case {"logn", "lognormal", "lognormal distribution"}
      retval = lognrnd(varargin{:});
    case {"nbin", "negative binomial", "negative binomial distribution"}
      retval = nbinrnd(varargin{:});
    case {"ncf", "noncentral f", "noncentral f distribution"}
      error("random: distribution type '%s' is not yet implemented", name);
    case {"nct", "noncentral t", "noncentral t distribution"}
      error("random: distribution type '%s' is not yet implemented", name);
    case {"ncx2", "noncentral chi-square", "noncentral chi-square distribution"}
      error("random: distribution type '%s' is not yet implemented", name);
    case {"norm", "normal", "normal distribution"}
      retval = normrnd(varargin{:});
    case {"poiss", "poisson", "poisson distribution"}
      retval = poissrnd(varargin{:});
    case {"rayl", "rayleigh", "rayleigh distribution"}
      retval = raylrnd(varargin{:});
    case {"t", "t distribution"}
      retval = trnd(varargin{:});
    case {"unif", "uniform", "uniform distribution"}
      retval = unifrnd(varargin{:});
    case {"unid", "discrete uniform", "discrete uniform distribution"}
      retval = unidrnd(varargin{:});
    case {"wbl", "weibull", "weibull distribution"}
      retval = wblrnd(varargin{:});
    otherwise
      error("random: unsupported distribution type '%s'", name);
  endswitch
endfunction