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 satisfy0 < 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.