/// <summary> /// Creates a new instance of <c>JointSet</c> with random values assigned that lie within the given joint limits. /// </summary> /// <param name="limits">The limits in which the values of the new <c>JointSet</c> should be. The names of the joints are taken from the <paramref name="limits"/>.</param> /// <returns>A new instance of <c>JointValues</c>.</returns> /// <seealso cref="JointLimits"/> /// <exception cref="ArgumentException">Thrown when for at least one joint a limit is missing.</exception> /// <exception cref="ArgumentNullException">Thrown when <paramref name="limits"/> is null.</exception> public static JointValues Random(JointLimits limits) => Random(limits, ThreadSafeRandom.Generator);