scipy.stats.uniform_direction — SciPy v1.15.2 Manual (original) (raw)

scipy.stats.uniform_direction = <scipy.stats._multivariate.uniform_direction_gen object>[source]#

A vector-valued uniform direction.

Return a random direction (unit vector). The dim keyword specifies the dimensionality of the space.

Parameters:

dimscalar

Dimension of directions.

seed{None, int, numpy.random.Generator,

Used for drawing random variates. If seed is None, the RandomState singleton is used. If seed is an int, a new RandomState instance is used, seeded with seed. If seed is already a RandomState or Generator instance, then that object is used. Default is None.

Notes

This distribution generates unit vectors uniformly distributed on the surface of a hypersphere. These can be interpreted as random directions. For example, if dim is 3, 3D vectors from the surface of \(S^2\)will be sampled.

References

[1]

Marsaglia, G. (1972). “Choosing a Point from the Surface of a Sphere”. Annals of Mathematical Statistics. 43 (2): 645-646.

Examples

import numpy as np from scipy.stats import uniform_direction x = uniform_direction.rvs(3) np.linalg.norm(x) 1.

This generates one random direction, a vector on the surface of\(S^2\).

Alternatively, the object may be called (as a function) to return a frozen distribution with fixed dim parameter. Here, we create a uniform_direction with dim=3 and draw 5 observations. The samples are then arranged in an array of shape 5x3.

rng = np.random.default_rng() uniform_sphere_dist = uniform_direction(3) unit_vectors = uniform_sphere_dist.rvs(5, random_state=rng) unit_vectors array([[ 0.56688642, -0.1332634 , -0.81294566], [-0.427126 , -0.74779278, 0.50830044], [ 0.3793989 , 0.92346629, 0.05715323], [ 0.36428383, -0.92449076, -0.11231259], [-0.27733285, 0.94410968, -0.17816678]])

Methods

rvs(dim=None, size=1, random_state=None) Draw random directions.