Object spawn percentage?

I’m trying to make a game that spawns a long hallway. I have five identical hallway/gameobjects, and i’m trying to make is so certain ones of a less chance of spawning. I currently have it so the starting hallway has a spawner at the end, which spawns another hallway, which goes on and on, but then the layout is the same. Is there a way a script could have it had a chance of spawning each room?

You could have an array with the five prefabs and another array with the chances for each one to spawn, and use a script like this:

var prefabs: GameObject[]; // set the array size and drag the prefabs here
var chances: int[]; // set the same array size and define the chances for each one

function RandomSpawn(pos:Vector3, rot:Quaternion){
  var rand = Random.Range(0, 100); // draw a random int in 0..99 range
  var rangeStart = 0;
  for (var n: int = 0; n < prefabs.length; n++){
    var rangeEnd = rangeStart + chances[n]; // calculate this object's chance range
    if (rand >= rangeStart && rand < rangeEnd){ // if random number inside the range...
      Instantiate(prefabs[n], pos, rot); // create the corresponding prefab
    }
    rangeStart = rangeEnd; // next range right after the current one
  }
}

// Example: create 10 random sections at Start; each section has length 5, and 
// the first one will be created at this object's position (assuming this script
// is attached to an empty object):

function Start(){
  var position = transform.position; // start at this object's position
  var rotation = transform.rotation; // keep this object's orientation
  for (var n = 0; n < 10; n++){
    RandomSpawn(position, rotation);
    pos += 5 * transform.forward; // advance position 5 units ahead
  }
}   

Some important notes:

1- This script must be attached to a separate object (the terrain, the camera, an empty object etc.)

2- chances and prefabs must have the same length, of course;

3- The chance for each object is expressed in percentage - like 20, 10, 30, 40, for instance. Obviously, the sum of all chances must be equal to 100.

EDITED:
Added example to show how to use RandomSpawn.

Here is @aldonaletto 's code converted to C# with formatting.

using UnityEngine;

public class RandomSpawnScript : MonoBehaviour
{
    // Set the array size and drag the prefabs here.
    public GameObject[] prefabs;

    // Set the same array size and define the chances for each prefab.
    public int[] chances;

    void RandomSpawn(Vector3 pos, Quaternion rot)
    {
        // Draw a random int in 0..99 range.
        int rand = Random.Range(0, 100);
        int rangeStart = 0;
        for (int n = 0; n < prefabs.Length; n++)
        {
            // Calculate this object's chance range.
            int rangeEnd = rangeStart + chances[n]; 

            if (rand >= rangeStart && rand < rangeEnd)
            {
                // If random number inside the range,
                // create the corresponding prefab.
                Instantiate(prefabs[n], pos, rot); 
            }

            // Next range right after the current one.
            rangeStart = rangeEnd; 
        }
    }

    // Example: create 10 random sections at Start; each section has length 5, and
    // the first one will be created at this object's position (assuming this script
    // is attached to an empty object).
    void Start()
    {
        // Start at this object's position.
        Vector3 position = transform.position;

        // Keep this object's orientation.
        Quaternion rotation = transform.rotation;

        for (int n = 0; n < 10; n++)
        {
            RandomSpawn(position, rotation);

            // Advance position 5 units ahead.
            position += 5 * transform.forward; 
        }
    }
}