Skip to main content
`Ctrl`+`K`

# scipy.spatial.transform.Rotation.random

classmethod Rotation.random(cls, num=None, random_state=None)

  Generate uniformly distributed rotations.

  Parameters:
    num int or None, optional

      Number of random rotations to generate. If None (default), then a single rotation is generated.

    random_state{None, int, `numpy.random.Generator`,

      > `numpy.random.RandomState`}, optional

      If seed is None (or np.random), the `numpy.random.RandomState` singleton is used. If seed is an int, a new `RandomState` instance is used, seeded with seed. If seed is already a `Generator` or `RandomState` instance then that instance is used.

  Returns:
    random_rotation `Rotation` instance

      Contains a single rotation if num is None. Otherwise contains a stack of num rotations.

  See also

  `scipy.stats.special_ortho_group`

  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

  Sample a single rotation:

      >>> R.random().as_euler('zxy', degrees=True)
      array([-110.5976185 ,   55.32758512,   76.3289269 ])  # random

  Sample a stack of rotations:

      >>> R.random(5).as_euler('zxy', degrees=True)
      array([[-110.5976185 ,   55.32758512,   76.3289269 ],  # random
             [ -91.59132005,  -14.3629884 ,  -93.91933182],
             [  25.23835501,   45.02035145, -121.67867086],
             [ -51.51414184,  -15.29022692, -172.46870023],
             [ -81.63376847,  -27.39521579,    2.60408416]])