С# генерация рандома, определенное количество раз в список

Dorian_Gray

Client
Регистрация
21.01.2018
Сообщения
226
Благодарностей
339
Баллы
63
Подскажите, как на C# реализовать получение рандомного числа с записью в список указанное количество раз, а дальше сортировку списка от меньшему к большему.
Пример: y=7 В переменной test содержится число 3 значит мы генерируем 3 рандомных числа от 1 до Y
и записываем в список Moskow, а дальше сортируем от меньшего к большему.
Буду признателен всем, кто подскажет с реализацией.
 

gevolushn

Известная личность
Регистрация
25.03.2019
Сообщения
518
Благодарностей
269
Баллы
63
Подскажите, как на C# реализовать получение рандомного числа с записью в список указанное количество раз, а дальше сортировку списка от меньшему к большему.
Пример: y=7 В переменной test содержится число 3 значит мы генерируем 3 рандомных числа от 1 до Y
и записываем в список Moskow, а дальше сортируем от меньшего к большему.
Буду признателен всем, кто подскажет с реализацией.
Возможно я покажусь грубым, но начинайте изучать C#. За месяц, по 2 часа в день вы освоите азы и сами сможете решать простые задачки вроде этой.
 
  • Спасибо
Реакции: Dorian_Gray

Dorian_Gray

Client
Регистрация
21.01.2018
Сообщения
226
Благодарностей
339
Баллы
63
Возможно я покажусь грубым, но начинайте изучать C#. За месяц, по 2 часа в день вы освоите азы и сами сможете решать простые задачки вроде этой.
Да я это понимаю, что уже вырос из стандартных методов zenno и знания С# не хватает, чтобы реализовать код лаконичнее. Но работа с циклами пока не идет. Видел, что вы помогали в предыдущей теме, стараюсь на форуме не флудить, поэтому поблагодарю вас еще раз здесь.
 

gevolushn

Известная личность
Регистрация
25.03.2019
Сообщения
518
Благодарностей
269
Баллы
63
Да я это понимаю, что уже вырос из стандартных методов zenno и знания С# не хватает, чтобы реализовать код лаконичнее. Но работа с циклами пока не идет. Видел, что вы помогали в предыдущей теме, стараюсь на форуме не флудить, поэтому поблагодарю вас еще раз здесь.
Код:
Random rand = new Random();//переменная для рандома

var list = project.Lists["Список 1"];//в кавычках название списка
int count_rand = Convert.ToInt32(project.Variables["Count_rand"].Value);//берем переменную количества рандомных чисел
int numm = Convert.ToInt32(project.Variables["Numm"].Value);//потолок рандома

for (int i = 0; i < count_rand; i++){//цикл с количеством итераций count_rand
    list.Add(rand.Next(1, numm).ToString());//если рандом включая "потолок", то нужно вместо numm -> numm + 1
}
 
  • Спасибо
Реакции: Dorian_Gray

gevolushn

Известная личность
Регистрация
25.03.2019
Сообщения
518
Благодарностей
269
Баллы
63
Забыл про сортировку, ща добавлю.
 
  • Спасибо
Реакции: Dorian_Gray

Sz5

Client
Регистрация
10.12.2012
Сообщения
157
Благодарностей
186
Баллы
43
вариантов без списков Zenno
Код:
/// <summary>
/// Метод сортировки.
/// </summary>
private class SortIntDescending : IComparer<int>
{
    int IComparer<int>.Compare(int a, int b) //implement Compare
    {
        if (a > b)
            return -1; //normally greater than = 1
        if (a < b)
            return 1; // normally smaller than = -1
        else
            return 0; // equal
    }
}
/// <summary>
/// Метод записи и списка.
/// </summary>
/// <param name="countWrite"></param>
/// <param name="maxNumber"></param>
/// <returns></returns>
public List<int> MethodRandomWriteAndSort(int countWrite, int maxNumber)
{
    Random random = new Random();
    List<int> listOfCity = new List<int>();

    int randomNumber = random.Next(1, maxNumber);

    for (int i = 0; i <= countWrite; i++)
    {
        listOfCity.Add(randomNumber);
    }

    listOfCity.Sort(new SortIntDescending());

    return listOfCity;
}
 
  • Спасибо
Реакции: Dorian_Gray

Dorian_Gray

Client
Регистрация
21.01.2018
Сообщения
226
Благодарностей
339
Баллы
63
Код:
Random rand = new Random();//переменная для рандома
project.Variables["random_list"].Value = project.Lists["List_URL"].Count.ToString();
var list = project.Lists["Random"];//в кавычках название списка
int count_rand = Convert.ToInt32(project.Variables["random_actions"].Value);//берем переменную количества рандомных чисел
int numm = Convert.ToInt32(project.Variables["random_list"].Value);//потолок рандома
for (int i = 0; i < count_rand; i++){//цикл с количеством итераций count_rand
    list.Add(rand.Next(1, numm).ToString());//если рандом включая "потолок", то нужно вместо numm -> numm + 1
}

List<string> numbers = project.Lists["Random"].ToList();// зеновский список
project.Lists["Random"].Clear();
numbers = numbers.OrderBy(s=>s.Length).ThenBy(s=>s).ToList();
numbers.ForEach(s=>project.Lists["Random"].Add(s));
Не подскажу на сколько правильный код, но у меня с такими параметрами завелость все.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
если повторы недопустимы - нужно идти другим путём
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 719
Благодарностей
1 376
Баллы
113
Как уже неоднократно обсуждалось на этом форуме, в цикле рекомендуется использовать другой рандом, а не такой как в коде выше.

смотреть
Код:
Global.Classes.rnd.Next(...)
 
  • Спасибо
Реакции: orka13

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Как уже неоднократно обсуждалось на этом форуме, в цикле рекомендуется использовать другой рандом, а не такой как в коде выше.

смотреть
Код:
Global.Classes.rnd.Next(...)
в данных обстоятельствах обычный рандом не хуже. А я бы вообще вместо зенновского советовал просто общем коде создавать свой статический
 

Dorian_Gray

Client
Регистрация
21.01.2018
Сообщения
226
Благодарностей
339
Баллы
63
в данных обстоятельствах обычный рандом не хуже. А я бы вообще вместо зенновского советовал просто общем коде создавать свой статический
Как уже неоднократно обсуждалось на этом форуме, в цикле рекомендуется использовать другой рандом, а не такой как в коде выше.
Код:
Global.Classes.rnd.Next(...)
Ребят, код работает, но подскажите как правильно и грамотно решить вопрос.
В чем суть: попробовал оба метода
Random rand = new Random(); и Global.Classes.rnd.Next(...). Протестировал в многопотоке получил такой резульат.
Для первого "24411543754444244551"
Для второго "71325366711571744122"
Читал уже эту статью на хабре и говорят что Random rand = new Random(); один и тот же рандом в потоке получаем т.к. есть время зависимость. И говорят нельзя еще раз объявлять в проекте Random rand = new Random(); ?
А для Global.Classes.rnd.Next(...). при таких же обстоятельствах это актуально?
Имеет ли смыл добавлять код паузы в начале проекта
Код:
System.Threading.Thread.Sleep(500);
для большего рандома. На вид оба варианта при добавлении паузы начали заметно меньше генерировать повторов.
в данных обстоятельствах обычный рандом не хуже. А я бы вообще вместо зенновского советовал просто общем коде создавать свой статический
Не могли бы подсказать пример вашего кода?
Почему я все это спрашиваю, когда уже казалось бы есть рабочее решение? -
Чтобы запомнить "Правильное" решение как образец для дальнейшей работы.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Ребят, код работает, но подскажите как правильно и грамотно решить вопрос.
В чем суть: попробовал оба метода
Random rand = new Random(); и Global.Classes.rnd.Next(...). Протестировал в многопотоке получил такой резульат.
Для первого "24411543754444244551"
Для второго "71325366711571744122"
Читал уже эту статью на хабре и говорят что Random rand = new Random(); один и тот же рандом в потоке получаем т.к. есть время зависимость. И говорят нельзя еще раз объявлять в проекте Random rand = new Random(); ?
А для Global.Classes.rnd.Next(...). при таких же обстоятельствах это актуально?
Имеет ли смыл добавлять код паузы в начале проекта
Код:
System.Threading.Thread.Sleep(500);
для большего рандома. На вид оба варианта при добавлении паузы начали заметно меньше генерировать повторов.

Не могли бы подсказать пример вашего кода?
Почему я все это спрашиваю, когда уже казалось бы есть рабочее решение? -
Чтобы запомнить "Правильное" решение как образец для дальнейшей работы.
В общем коде строка
Код:
public static Random rnd = new Random();


ну а в c# кубике уже
Код:
int val = CommonCode.rnd.Next(100);
по такому принципу
 
  • Спасибо
Реакции: Dorian_Gray

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)