Adding a speed to rotation

I am using the most basic rotation code for my object, it does exactly what i want but at a speed that is far to fast, how do i add a speed variable so i would be able to change it to a suitable speed?

Update () {
transform.rotation = Random.rotation;
}

Your current code looks like it sets the rotation of the object to a random orientation every frame. There’s not really a “speed” for the object involved. To see what I mean, consider the following code snippet:

void Update()
{
    transform.position = new Vector3(random.value, random.value, random.value);
}

What is the “speed” of the object in this scenario. It doesn’t really have one. It’s just jumping around instantaneously between random positions. You couldn’t really “slow” this object down.

Continuing the analogy of linear motion, you might consider what it would look like for the object to have a speed.

public float speed = 5.0f;
private Vector3 direction;

void Start()
{
    direction = Random.onUnitSphere;
}

void Update()
{
    transform.Translate(direction * speed * Time.smoothDeltaTime);
}

Now, in our linear example, it’s easier to see how to do what we want. We pick a random direction every time the GameObject is started, and then we can easily change the speed to whatever we want in the Editor View for this object.

Finally, we can bring our linear example back to a rotational one.

public float angularVelocity = 10.0f;
private Vector3 axisOfRotation;

void Start()
{
    axisOfRotation = Random.onUnitSphere;
}

void Update()
{
    transform.Rotate(axisOfRotation, angularVelocity * Time.smoothDeltaTime);
}

In this last code snippet we select an arbitrary axis to rotate our object around, and then rotate it at a constant angular velocity. Then we can easily change this angular velocity using the editor controls to whatever suits our preference.