Рандомный выбор числа из диапазона

335
23 декабря 2016, 11:08

Используется С#

Как сделать чтобы рандомизация осуществлялась по двум вариантам?
Вариант 1: min=1 000; max=5 000; col=1;
Вариант 2: min=1; max=20; col=4;

Приложенный код не удалось настроить, поэтому буду признателен, если кто-нибудь поможет настроить или предложит свой вариант для решения данной задачи. Ссылка на проект
ссылка на проект ИЗМ1
Как скачать проект см (http://prntscr.com/dmh2iw)

КОД

namespace rsh  
{  
   public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Random r = new Random();
        // РАНДОМИЗАЦИЯ ВАРИАНТ 1
        private void button1_Click(object sender, EventArgs e)
        {
            int min = Convert.ToInt16(textBox1.Text); // МАКС - максимальное число диапазона
            int max = Convert.ToInt16(textBox2.Text); // МИН - минимальное число диапазона            
            int col = Convert.ToInt16(textBox3.Text); // количество итераций 
            int[] perm = Enumerable.Range(min, max + 1).ToArray(); 

            for (int i = col; i >= 1; i--)
            {
                int j = r.Next(i + 1);
                // exchange perm[j] and perm[i];
                int temp = perm[j];
                perm[j] = perm[i];
                perm[i] = temp;
                textBox4.AppendText(perm[i] + "  " + "\r\n"); // выдаёт ОДИН ряд цифр  
            }
        }
        // РАНДОМИЗАЦИЯ ВАРИАНТ 2
        private void button3_Click(object sender, EventArgs e)
        {
            int min = Convert.ToInt16(textBox1.Text); // МАКС - максимальное число диапазона
            int max = Convert.ToInt16(textBox2.Text); // МИН - минимальное число диапазона            
            int col = Convert.ToInt16(textBox3.Text); // количество итераций 
            int[] perm = Enumerable.Range(min, max + 1).ToArray();

            for (int i = col; i >= 1; i--)
            {
                int j = r.Next(i + 1);
                // exchange perm[j] and perm[i];
                int temp = perm[j];
                perm[j] = perm[i];
                perm[i] = temp;
                textBox4.AppendText(perm[i] + "  " + "\r\n"); // выдаёт ОДИН ряд цифр  
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            textBox4.Clear();
        }      
    }  
  }
Answer 1

Ссылка ваша нерабочая. Вот вам пример консольной программы:

class Program
{
    static void Main(string[] args)
    {
        foreach (var item in GetRandomNumbers(1000, 5000))
        {
            Console.WriteLine(item.ToString());
        }
        Console.WriteLine(new string('=', 20));
        foreach (var item in GetRandomNumbers(1, 20))
        {
            Console.WriteLine(item.ToString());
        }
        Console.ReadKey();
    }
    public static List<int> GetRandomNumbers(int min = 0, int max = 5)
    {
        if (max - min <= 0) throw new ArgumentException("Неверные аргументы в вызове метода");
        int seed = (int)DateTime.Now.Ticks;
        Random rnd = new Random(seed);
        List<int> result = Enumerable.Range(min, max).OrderBy(n => rnd.Next()).ToList();
        return result;
    }
}

Только я не совсем понимаю, что значит это ваше: "Приложенный код не удалось настроить..."?

READ ALSO
Получить текст сылками на картинки в anglesharp

Получить текст сылками на картинки в anglesharp

Допустим, имеется страница, где в тексте есть картинки

279
RangeSelector изменение шаблона

RangeSelector изменение шаблона

В UWP есть MicrosoftToolkit

248
Проблема с добавлением нового шрифта

Проблема с добавлением нового шрифта

В проекте решил использовать новый шрифт Myriad ProПри выставленном размере 11 все нормально

272
ListView быстрое переключение отображения

ListView быстрое переключение отображения

Потребовалось мне иметь возможность быстро и просто менять отображение элементов в ListBoxКонечно же в нем все очень неудобно, если отображение...

344