How can i make objects to move in random speed ?

At the top of the script i have this variables

[Range(3,50)]
public float moveSpeed = 3;
public bool randomSpeed = false;

And the method with the objects movement:

private void MoveToNextFormation()
    {
        float step = moveSpeed * Time.deltaTime;
        for (int i = 0; i < squadMembers.Count; i++)
        {
            squadMembers_.transform.LookAt(newpos*);*_

if (randomSpeed == true)
{
step = Random.Range(3, 50) * Time.deltaTime;
}
squadMembers*.transform.position =*
Vector3.MoveTowards(squadMembers_.transform.position, newpos*, step);
if (Vector3.Distance(squadMembers.transform.position, newpos) < threshold)
{
if (squareFormation == true)
{
Vector3 degrees = new Vector3(0, -90f, 0);
Quaternion quaternion = Quaternion.Euler(degrees);
squadMembers.transform.rotation = Quaternion.Slerp(squadMembers.transform.rotation, quaternion, rotateSpeed * Time.deltaTime);
}
else
{
squadMembers.transform.rotation = Quaternion.Slerp(squadMembers.transform.rotation, qua, rotateSpeed * Time.deltaTime);
}
}
}
}
I added this part for the random:
if (randomSpeed == true)
{
step = Random.Range(3, 50) * Time.deltaTime;
}*

But it’s not effecting the speed at all.
If i change the Rang attribute value while the game is running it will change the movement speed of the characters and that is fine.
But i want now that if i check/uncheck the randomSpeed while the game is running that it will change the speed to random and if uncheck to back to it’s original random that the Range attribute is set to.
Another thing i noticed using break point when it stop on the line:
step = Random.Range(3, 50) * Time.deltaTime;
I see that the value in step is float numbers like 0.454 or 0.76 or 0.343
So i wonder with this values how it should move at any speed at all ? 0.4 or 0.7 seems very low speed no?
But if the randomSpeed is unchecked and the speed is used by the Range attribute it does change the speed even if the value in step is 0.456 or 0.734
So first how do i make the random speed part ?
And second why the speed values are float numbers and very low ? I guess i don’t understand yet how this Time.deltaTime is working ?_

As of right now, your script is setting the speed to a new random value every frame. If you want to set it to a random value only once when you check randomSpeed, you should instead implement a custom editor window and use GUILayout.Button().

As for the float values, step in this situation is distance moved every frame, not the speed. Therefore it is normal for it to be such a small value.