bundles / scipy latest / scipy / spatial / transform / _rotation / Rotation / random
staticmethod
scipy.spatial.transform._rotation:Rotation.random
source: build-install/usr/lib/python3.14/site-packages/scipy/spatial/transform/_rotation.py:2296
Signature
def random(num: int | None = None, rng: np.random.Generator | None = None, *, shape: tuple[int, ...] | None = None, random_state = None) → RotationSummary
Generate rotations that are uniformly distributed on a sphere.
Extended Summary
Formally, the rotations follow the Haar-uniform distribution over the SO(3) group.
Parameters
num: int or None, optionalNumber of random rotations to generate. If None (default), then a single rotation is generated.
rng: {None, int, `numpy.random.Generator`}, optionalIf
rngis passed by keyword, types other than numpy.random.Generator are passed to numpy.random.default_rng to instantiate aGenerator. Ifrngis already aGeneratorinstance, then the provided instance is used. Specifyrngfor repeatable function behavior.If this argument is passed by position or
random_stateis passed by keyword, legacy behavior for the argumentrandom_stateapplies:If
random_stateis None (or numpy.random), the numpy.random.RandomState singleton is used.If
random_stateis an int, a newRandomStateinstance is used, seeded withrandom_state.If
random_stateis already aGeneratororRandomStateinstance then that instance is used.
shape: tuple of ints, optionalShape of random rotations to generate. If specified,
nummust be None.
Returns
random_rotation: `Rotation` instanceContains a single rotation if
numis None. Otherwise contains a stack ofnumrotations.
Notes
This function is optimized for efficiently sampling random rotation matrices in three dimensions. For generating random rotation matrices in higher dimensions, see scipy.stats.special_ortho_group.
Examples
from scipy.spatial.transform import Rotation as R
✓R.random().as_euler('zxy', degrees=True)
✗array([ 108.30981, 47.63721, -125.98432])Sample a stack of rotations:
R.random(5).as_euler('zxy', degrees=True)
✗array([[ 3.02241, 3.11116, -111.87423],
[ -23.6988 , 70.6207 , 126.14996],
[ 150.28098, 40.06959, -48.65577],
[-104.06281, 1.53809, -5.1012 ],
[ 41.27019, 24.18738, 33.25914]])
See also
- scipy.stats.special_ortho_group
Aliases
scipy.spatial.transform.Rotation.random