How to randomize a stages with no repetition?

So im making a 2D game which i need to random between stages ( functions ) , i want it to be something like that , (1,3,4,2,1,4,2,3,1,2,4,3,1,2,3,4… and so on) ( each number is stage not a real integer)

thats the way the stages go now :

  if (Score > 10 && Score < 20)//stage 2
            {
                TextGame(spawnedObject);
            }
            if (Score > 20 && Score < 30)//stage 3
            {
                ColorGame(spawnedObject);
            }
            if (Score > 30 && Score < 40)//stage 4
            {
                NumberGame(spawnedObject);
                Invoke("NormalGame", 10);
            }
           
            if (Score > 40 && Score < 50)//stage 1
            {
                NormalGame(spawnedObject);
                
            }
            if (Score > 50 && Score < 60)//stage 2
            {
                TextGame(spawnedObject);
            }
            if (Score > 60 && Score < 70)//stage 4
            {
                NumberGame(spawnedObject);
                Invoke("NormalGame", 10);
            }
            
            if (Score > 70 && Score < 80)//stage 3
            {
                ColorGame(spawnedObject);
            }
            //stage 1

but i want it to be endless ,
any help would be really appriciated, ive tried many MANY stuff and none has worked.

anyone has any idea?