Рандом без повторений

degukivai

Random part = new Random();
int[] numb = new int[16];
 
for (int j = 0; j < numb.Length; j++)
            {
                numb[j] = part.Next(0, 15);
                Console.WriteLine(numb[j]);
                Console.ReadKey();
            }
записываю случайные числа в массив от 0 до 15. Как сделать так, чтобы числа не повторялись?Заранее спасибо!
3 ответа

degukivai

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace FunWithStructures
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> list = new List<int>();
            Random rand = new Random();
 
            while (list.Count < 16)
            {
                int n = rand.Next(0, 16);
                if (!list.Contains(n))
                    list.Add(n);
            }
            Console.Read();
        }
    }


degukivai

Random part = new Random();
int[] numb = Enumerable.Range(0, 16).ToArray();
 
for (int i = numb.Length - 1; i > 0; i--)
{
   int j = part.Next(i);
   int t = numb[i];
   numb[i] = numb[j];
   numb[j] = t;
}
O(n).