Random Numbers
Torch provides accurate mathematical random generation, based on Mersenne Twister random number generator.
Seed Handling
The random number generator is provided with a random seed via seed() when torch is being initialised. It can be reinitialized using seed() or manualSeed().
Initial seed can be obtained using initialSeed().
Setting a particular seed allows the user to (re)-generate a particular sequence of random numbers. Example:
> torch.manualSeed(123)
> = torch.uniform()
0.69646918727085
> return torch.uniform()
0.71295532141812
> return torch.uniform()
0.28613933874294
> torch.manualSeed(123)
> return torch.uniform()
0.69646918727085
> return torch.uniform()
0.71295532141812
> return torch.uniform()
0.28613933874294
> torch.manualSeed(torch.initialSeed())
> return torch.uniform()
0.69646918727085
> return torch.uniform()
0.71295532141812
> return torch.uniform()
0.28613933874294
[number] seed()
Set the seed of the random number generator using /dev/urandom
(on Windows the time of the computer with granularity of seconds is used).
Returns the seed obtained.
manualSeed(number)
Set the seed of the random number generator to the given number
.
initialSeed()
Returns the initial seed used to initialize the random generator.
[number] random()
Returns a 32 bit integer random number.
[number] uniform([a],[b])
Returns a random real number according to uniform distribution on [a,b[. By default a
is 0 and b
is 1.
[number] normal([mean],[stdv])
Returns a random real number according to a normal distribution with the given mean
and standard deviation stdv
.
stdv
must be positive.
[number] exponential(lambda)
Returns a random real number according to the exponential distribution ''p(x) = lambda * exp(-lambda * x)''
[number] cauchy(median, sigma)
Returns a random real number according to the Cauchy distribution ''p(x) = sigma/(pi*(sigma^2 + (x-median)^2))''
[number] logNormal(mean, stdv)
Returns a random real number according to the log-normal distribution, with
the given mean
and standard deviation stdv
.
stdv
must be positive.
[number] geometric(p)
Returns a random integer number according to a geometric distribution
''p(i) = (1-p) * p^(i-1).
pmust satisfy
0 < p < 1''.
[number] bernoulli([p])
Returns 1
with probability p
and 0
with probability 1-p
. p
must satisfy 0 <= p <= 1
.
By default p
is equal to 0.5
.