Выбор элементов из набора без повторений

Общие вопросы о Unity3D

Выбор элементов из набора без повторений

Сообщение Orcan 16 ноя 2017, 16:55

Привет всем! Нужно Выбор элементов из набора без повторений, то есть нужно чтоб из массива цифр { 1, 3,5,7,9} при срабатывании функции выбирались случайные значения { 3, 1,9,7,5} например, а не { 1, 3,1,7,1} чтоб не повторялись. Как это реализовать. Вот нашёл Инструкцию (вроде к этой теме относится), но так и не понял как правильно выводить значения. https://docs.unity3d.com/ru/530/Manual/ ... mbers.html. Вот мой вариант кода но не рабочий потому что выводит { 1, 3,5,7,9} а не случайно
Синтаксис:
Используется csharp
   
 public int[] spawnPoints; //  { 1, 3,5,7,9}
 public int X=5; //число элементов которые нужно вывести
     
    void Start()
    {
         ChooseSet(X);
    }
 
   int[] ChooseSet (int numRequired) {
        int[] result = new int[numRequired];

        int numToChoose = numRequired;

        for (int numLeft = spawnPoints.Length; numLeft > 0; numLeft--) {

            float prob = (float)numToChoose/(float)numLeft;
 

            if (Random.value <= prob) {
                numToChoose--;
                result[numToChoose] = spawnPoints[numLeft - 1];
                 
                if (numToChoose == 0) {
                    break;
                }
            }
        }    
     print(result[0] + " Random");
     print(result[1] + " Random");
     print(result[2] + " Random");
     print(result[3] + " Random");
     print(result[4] + " Random");
 
        return   result;
    }
 }



 
Orcan
UNITрон
 
Сообщения: 191
Зарегистрирован: 25 сен 2016, 04:22

Re: Выбор элементов из набора без повторений

Сообщение Anonymyx 16 ноя 2017, 17:06

Т.е. просто перемешать и взять определенное количество?

int[] result = spawnPoints.OrderBy(x=>new System.Random().Next()).Take(X).ToArray(); - ЗАМЫКАНИЕ

using System.Linq;
...
System.Random random = new System.Random();
int[] result = spawnPoints.OrderBy(x=>random.Next()).Take(X).ToArray();
Последний раз редактировалось Anonymyx 16 ноя 2017, 17:14, всего редактировалось 1 раз.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Выбор элементов из набора без повторений

Сообщение Orcan 16 ноя 2017, 17:13

Да но у тебя опять выводит {1.3.5.7.9
всё отлично сделал как ты сказал Спасибо
Последний раз редактировалось Orcan 16 ноя 2017, 17:22, всего редактировалось 2 раз(а).
Orcan
UNITрон
 
Сообщения: 191
Зарегистрирован: 25 сен 2016, 04:22


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11