Search code examples
c#arraysunity-game-enginerandomint

How to add integers to an array and get a random number?


It's a favorite panel. You can select numbers (with button click) and than I would like to add this number to an array and than get a random number from this array.

public int runs;
public int randomNumber;
public int[] favorites = new int[75];

public void RandomButton()
{
    if (DataController.Instance.group == 3)
    {
            favorites[randomNumber] = UnityEngine.Random.Range(0, favorites.Length);
            Debug.Log(favorites[randomNumber]);
    }
}

public void b0()
{
    for (runs = 0; runs < favorites.Length; runs++)
    {
        favorites[runs] = 0;
    }
}

public void b1()
{
    for (runs = 0; runs < favorites.Length; runs++)
    {
        favorites[runs] = 1;
    }
}

I'm stuck , because I get random number between 0 - 75. I would like to have a random number from the "favorites" array after I click on the buttons.


Solution

  • What you are doing here

    favorites[randomNumber] = UnityEngine.Random.Range(0, favorites.Length);
    

    Is assign a random value between 0 and 74 to an item in your array .. depending on whatever value randomNumber has at that moment ...

    What you rather want to do is actually access the value from the array using the random value as index like

    randomNumber = favorites [UnityEngine.Random.Range(0, favorites.Length)];
    Debug.Log(randomNumber);
    

    However what difference will it make if you are filling your array with always the same numbers using b0 and b1?

    After running these methods all elements are either 0 or 1 anyway ...


    Anyway in your question you are also asking for how to Add a number.

    You shouldn't use an array for this but rather a List<int> like

    public List<int> favorites = new List<int>();
    
    public void AddNumber(int newNumber)
    {
        favorites.Add(newNumber);
    }
    
    public void RandomButton()
    {
        if (DataController.Instance.group == 3)
        {
                randomNumber = favorites[UnityEngine.Random.Range(0, favorites.Count)];
                Debug.Log(randomNumber);
        }
    }