I have this script that sets all the int in the 12 int long array to 0:

```
int[] songs = new int [12];
// Use this for initialization
void Start () {
for(int i=0; i<songs.Length; i++){
songs *= 1;*
```

_ Debug.Log(songs *);*_

** }**

** Set ();**

** }**

*how do I set a int to a ranomd int from the array that has the value of 1 (int his cause it would choose from all of them cause they’re all set to 1) something like this:*

*int random_pick = random number from songs that is = to 1*

*for eg. it would pick the 3rd int and the int random_pick would be equal to 3.*

*thanks for your help in advanced.*

If I understand correctly, you want to find all the indices where which the array element is equal to 1, then pick a random index from those indices. This code is untested but I think it should get you what you need.

```
void GetRandomElementWithValue(int value)
{
int[] indices = Array.FindAll(sounds, x => x == value);
int randomIndex = indices[Random.Range(0, indices.Length)];
}
```

Store the index of the songs that meet your criteria in a list. Then, select an random item from that list.

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class RandomSong : MonoBehaviour {
int[] songs = new int[12];
void Start()
{
for (int i = 0; i < songs.Length; i++)
{
songs *= 0; // I turned all to 0 for this example.*
```

*}*

*songs[9] = songs[11] = 1; // Then, I turned only these to 1.*

*int random_pick = 0;*

*if (songs.Any(x => x == 1)) // Make sure at least one song = 1.*

*random_pick = GetRandomSongWithValue(1);*

*Debug.Log(random_pick); // This will be either 9 or 11.*

*}*

*int GetRandomSongWithValue(int value)*

*{*

*// Make a list of the indecise of all songs with a value of 1.*

*List usableIndecise = new List();*

*for (int i = 0; i < songs.Length; i++)*

*{*

*if (songs **== value)*

*usableIndecise.Add(i);*

*}*

*// Return a random index.*

*return usableIndecise[UnityEngine.Random.Range(0, usableIndecise.Count)];*

*}*

*}*