How to get objects with the same script to act independently?

Currently, I have 2 objects that are supposed to act independently of each other. Both are just supposed to move around randomly, and stop and turn every so often. I am using the same script to control both objects, but this results in them always moving together in the same direction. I am using a private random to determine the direction of rotation, but it generates the same number in both scripts. How do I get them to turn independently, that is, have the two randoms generate different numbers?

Code if it helps:

private Rigidbody selfRB;
private Animator selfAnim;
public playerStats player;

private float timePassed = 0.0f;
private float repeatTime = 4f;
private System.Random rng = new System.Random();

private int rotation;
private bool moved = false;

// Start is called before the first frame update
void Start()
{
    selfRB = GetComponent<Rigidbody>();
    selfAnim = GetComponent<Animator>();
    rotation = rng.Next(0, 360);
    print("RNG: " + rotation);
}

// Update is called once per frame
void Update()
{
    timePassed += Time.deltaTime; //ADDS TIME THAT HAS PASSED TO TOTAL TIME

    if (timePassed >= repeatTime) //RESETS TIME IF IT GOES OVER THE LIMIT
    {
        rotation = rng.Next(0, 360);
        timePassed = 0.0f;
    }

    print("OBJECT: " + gameObject.name);

    if (timePassed <= 2) //MOVING PERIOD
    {
        transform.eulerAngles = new Vector3(transform.eulerAngles.x, rotation + 0f, transform.rotation.z);
        selfRB.velocity = transform.forward * 7.5f;
        moved = true;
        selfAnim.SetBool("moving", true);
    }
    else if (moved) //WAIT PERIOD
    {
        selfRB.velocity = new Vector3(0, 0, 0);
        moved = false;
        selfAnim.SetBool("moving", false);
    }

try this:

// add this to header instead of private System.Random rng = new System.Random();

private float rng;

// add this in some method where you what to create random number

rng = Random.Range(0f, 360f);

or you could try this script, create a few game objects attach this script to them and after presing play observe a rng field in the inspector of each one
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class randomfloat : MonoBehaviour
{
    [SerializeField]private float rng;
    // Start is called before the first frame update
    void Start()
    {
        rng = Random.Range(0f, 360f);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

okay boiz, apparently im just dummy retarded and need to use UnityEngine.Random instead of System.Random