Why every ChildObject gets activated, but not 0?

So I want to build a inventory, in which the gun gets picked random.
The inventory has 6 Slots (0-5). I can pick every gun, but not 0. If i get the number 0, it just does nothing.
I just started to programm, so my code doesn’t look very good i guess.

Here’s the script, to start reloading and getting a new weapon:

IEnumerator Reload()
{
    isReloading = true;

    Debug.Log("reloading...");

    yield return new WaitForSeconds(reloadTime);

    currentAmmo = maxAmmo;

    int intNumber = Random.Range(0, 5);
    float randNumber = (float)intNumber;
    Debug.Log(randNumber);
    weaponSwitching.selectorWeapon = randNumber;

    isReloading = false;
}

Here’s the script for the activation of the gun:

void selectedWeapon()
{
    {
        float i = 0f;
        foreach (Transform weapon in transform)
        {
            Debug.Log("SelectorWeapon " + selectorWeapon);
            if (i == selectorWeapon)
            {
                weapon.gameObject.SetActive(true);
            }
            else
            {
                weapon.gameObject.SetActive(false);
            }

            i++;
        }
    }
}

try this:
IEnumerator Reload()
{
isReloading = true;
Debug.Log(“Reloading…”);
yield return new WaitForSeconds(reloadTime);
currentAmmo = maxAmmo;

    int randNumber = Random.Range(1, 6); // Generate a random number from 1 to 5 (inclusive)
    Debug.Log(randNumber);
    weaponSwitching.selectorWeapon = randNumber;

    isReloading = false;
}

void selectedWeapon()
{
    int i = 0;
    foreach (Transform weapon in transform)
    {
        Debug.Log("SelectorWeapon: " + weaponSwitching.selectorWeapon);
        if (i == weaponSwitching.selectorWeapon)
        {
            weapon.gameObject.SetActive(true);
        }
        else
        {
            weapon.gameObject.SetActive(false);
        }
        i++;
    }
}