What is the difference on these two code?

Hello, i using these two code,

            for (int i = 0; i < pop; i++) {
                GameObject clone = (GameObject)Instantiate (arac, baslangic.transform.position, arac.transform.rotation);
                clone.AddComponent<aracKod>();
                clone.transform.SetParent (hareket.transform);
                clone.GetComponent<aracKod>().katmanlaraDegerAta(100);
                clone.GetComponent<aracKod>().carpma = 0;
            }

katmanlaraDegerAra(100) assign random values to variables and it is works perfect

            for(int i  =0;i<pop;i++) {
                GameObject clone2 = (GameObject)Instantiate(arac,baslangic.transform.position,arac.transform.rotation);
                clone2.transform.SetParent (hareket.transform);
                clone2.AddComponent<aracKod>();
              
                float[,] tmp1 = bestKatman1;
                clone2.GetComponent<aracKod>().girisKatman = tmp1;

                float[,] tmp2 = bestKatman2;
                clone2.GetComponent<aracKod>().araKatman1 = tmp2;

                float[,] tmp3 = bestKatman3;
                clone2.GetComponent<aracKod>().araKatman2 = tmp3;

                float[,] tmp4 = bestKatman4;
                clone2.GetComponent<aracKod>().cikisKatman = tmp4;
              
                clone2.GetComponent<aracKod>().katmanlaraDegerAta(100);
                clone2.GetComponent<aracKod>().carpma = 0;
            }

but when I use this , all instantiated object get same values not random. I am working on this for 2 days and can not find the problem.

This is the randomize code but they are any changing on them.

    public void katmanlaraDegerAta(float oran) {
        girisKatman = katmanDegerDegis(girisKatman,oran);
        araKatman1 = katmanDegerDegis(araKatman1,oran);
        araKatman2 = katmanDegerDegis(araKatman2,oran);
        cikisKatman = katmanDegerDegis(cikisKatman,oran);
   
    }

    float[,] katmanDegerDegis(float[,] agirlik,float oran) {
   
        float[,] tmpCikis = agirlik;
        if(oran > 1) {
            for(int i = 0;i<agirlik.GetLength(0);i++) {
                for(int j = 0;j<agirlik.GetLength(1);j++) {
               
                    tmpCikis[i,j] = Random.Range(-1.0f,1.0f);
                }
            }
        }
        else {
           
            for(int i = 0;i<agirlik.GetLength(0);i++) {
                for(int j = 0;j<agirlik.GetLength(1);j++) {
                    float ustLimit = Mathf.Clamp((agirlik[i,j] + oran),-1f,1f);
                    float altLimit = Mathf.Clamp((agirlik[i,j] - oran),-1f,1f);
               
                    tmpCikis[i,j] = Random.Range(altLimit,ustLimit);
                }
            }
        }

        return tmpCikis;
    }

Without knowing what variable that method sets a random value on, it’s impossible to say.

Also, addcomponent returns the component so you could store it then and there would be no need to look it up so many times.

I added the randomizing functions

An array is a reference type and you are passing a reference to your 4 arrays in the second for loop.