var list1 = new List <string> () ;
int is_repiat;
int data_rnd;
for (int i = 1; i <=10; i++) {
data_rnd = Global.Classes.rnd.Next(0, 100);
is_repiat=0;
for (int i_list = 0; i_list<list1.Count; i_list++) {
if ( data_rnd.ToString() == list1[i_list] ) {
is_repiat=1;
break;
}
}
if (is_repiat == 1) i=i-1;
else {
string data_rnd_str=data_rnd.ToString();
list1.Add(data_rnd_str);
}
}
project.Variables["var1"].Value = list1[0];
project.Variables["var2"].Value = list1[1];
project.Variables["var3"].Value = list1[2];
// дальше по аналогии
Огромное спасибо!C#:var list1 = new List <string> () ; int is_repiat; int data_rnd; for (int i = 1; i <=10; i++) { data_rnd = Global.Classes.rnd.Next(0, 100); is_repiat=0; for (int i_list = 0; i_list<list1.Count; i_list++) { if ( data_rnd.ToString() == list1[i_list] ) { is_repiat=1; break; } } if (is_repiat == 1) i=i-1; else { string data_rnd_str=data_rnd.ToString(); list1.Add(data_rnd_str); } } project.Variables["var1"].Value = list1[0]; project.Variables["var2"].Value = list1[1]; project.Variables["var3"].Value = list1[2]; // дальше по аналогии
// список переменных зеннопостера для заполнения
string[] zennoposterVariablesName = { "var1", "var2", "var3", "var4", "var5", "var6", "var7", "var8", "var9", "var10" };
// список из каких значений выбираем
List<int> numbers = new List<int>() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100};
Random rnd = new Random();
// как в кубике, выбираем случайный элемент с удалением по индексу
foreach(string variablesName in zennoposterVariablesName)
{
int index = rnd.Next(numbers.Count);
int elem = numbers[index];
numbers.RemoveAt(index);
// присваиваем значение переменной
project.Variables[variablesName].Value = elem.ToString();
}
Надо бы в цикле массивы с исходными данными создать)C#:// список переменных зеннопостера для заполнения string[] zennoposterVariablesName = { "var1", "var2", "var3", "var4", "var5", "var6", "var7", "var8", "var9", "var10" }; // список из каких значений выбираем List<int> numbers = new List<int>() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}; Random rnd = new Random(); // как в кубике, выбираем случайный элемент с удалением по индексу foreach(string variablesName in zennoposterVariablesName) { int index = rnd.Next(numbers.Count); int elem = numbers[index]; numbers.RemoveAt(index); // присваиваем значение переменной project.Variables[variablesName].Value = elem.ToString(); }
Random rnd=new Random();
int[] MyRandomArray = numbers.OrderBy(x => rnd.Next()).ToArray();
С одной стороны да, с другой нет.Надо бы в цикле массивы с исходными данными создать)
а если надо 10 из 10 000 000 и не повторяющихся ? делать массив на 10 лямов элементов ради выборки 10 штучек ?C#:// список переменных зеннопостера для заполнения string[] zennoposterVariablesName = { "var1", "var2", "var3", "var4", "var5", "var6", "var7", "var8", "var9", "var10" }; // список из каких значений выбираем List<int> numbers = new List<int>() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100}; Random rnd = new Random(); // как в кубике, выбираем случайный элемент с удалением по индексу foreach(string variablesName in zennoposterVariablesName) { int index = rnd.Next(numbers.Count); int elem = numbers[index]; numbers.RemoveAt(index); // присваиваем значение переменной project.Variables[variablesName].Value = elem.ToString(); }
Решаем конкретную задачу, а не универсальную.неэффективное использование памяти , не правда ли ?
Как вариант. В коде выше скопировал логику работы зенки со списками, есть готовый список, выбрать элемент, после удалить.вообще перемешать массив так
Ты же понимаешь, что под твой код тоже можно создать условия, при котором он будет неэффективно использовать ресурсы?а если надо 10 из 10 000 000 и не повторяющихся ? делать массив на 10 лямов элементов ради выборки 10 штучек ?
немного неэффективное использование памяти , не правда ли ?
нет. не понимаю. будут другие условия , будет другое решение.Ты же понимаешь, что под твой код тоже можно создать условия, при котором он будет неэффективно использовать ресурсы?
так тебе человек тоже самое написал "решаем конкретную задачу". Ты зачем-то привёл новые условия при которых якобы будет расход памяти. Если в твой метод привнести новые условия, расход тоже будет, хоть и не памятинет. не понимаю. будут другие условия , будет другое решение.
на эти условия я свой вариант выложил, на этом все. помощь оказана. кому надо тот воспользуется, кому не надо пусть пишет свой код.
Если вы в этой теме хотите посоревноваться у кого код лучше , вперед и с песней
да решайте сами свою "конкретную" задачу. как хотите и чем хотите.так тебе человек тоже самое написал "решаем конкретную задачу". Ты зачем-то привёл новые условия при которых якобы будет расход памяти. Если в твой метод привнести новые условия, расход тоже будет, хоть и не памяти
Сам начал с упрёка, а когда получил симметричный ответ - тут же поплыл. Ты странныйда решайте сами свою "конкретную" задачу. как хотите и чем хотите.
хорошо. я странный. попридержу тогда свои странности при себе. зря выложил тут парочку своих решений. спасибо тебе добрый человек, ты научил меня не тратить свое время на такую херню как помощь . в самом деле нафига я вообще тратил свое бесценное странное время на написание кода никому не нужного. в следующий раз я точно не совершу такой ошибки.Сам начал с упрёка, а когда получил симметричный ответ - тут же поплыл. Ты странный
таких тараканов действительно лучше держать при себехорошо. я странный. попридержу тогда свои странности при себе. зря выложил тут парочку своих решений. спасибо тебе добрый человек, ты научил меня не тратить свое время на такую херню как помощь . в самом деле нафига я вообще тратил свое бесценное странное время на написание кода никому не нужного. в следующий раз я точно не совершу такой ошибки.
Этот код был нужен топикстартеру, так что не зря тратили, помогли ему.тратил свое бесценное странное время на написание кода никому не нужного.
List<int> lstNumber = new List<int>();
int number = 0;
//Генерируем коллекцию случайных чисел
while(lstNumber.Count<10){
number = Global.Classes.rnd.Next(0, 100);//Диапазон случайных чисел
if(!lstNumber.Contains(number)) lstNumber.Add(number);
}
//Запись данных в переменные проекта
for(int i=0; lstNumber.Count>0 ;i++){
project.Variables["var"+i.ToString()].Value = lstNumber[0].ToString(); lstNumber.RemoveAt(0);
}
не вижу смысла обсуждать чьи либо знания. тем более давать советов что и где подтянуть. раз тема эффективности так сильно всех корежит, пусть каждый пишет свой код.Этот код был нужен топикстартеру, так что не зря тратили, помогли ему.
Предложенный далее вариант, ему уже не нужен, но он может потребоваться другим, его и обсуждали.
Решения внешне могут выглядеть странно, но решается одна задача, это всегда быстрее и легче, что будет, то будет, когда будет, тогда и решим, иначе вместо работы будем профилированием весь день заниматься.
Если у вас написание кода отнимает такое драгоценное время, то стоит задуматься о том, что 15 строчек кода так долго не пишутся и стоит подтянуть знания.
Или создать тему, помогу за вознаграждение, затраченное время вполне окупится.
p.s.
В зависимости от структуры данных нужно использовать разные алгоритмы сортировок, т.к. скорость будет отличаться в разы. В зависимости от способа выбора случайного элемента будет меняться частота появления элементов, например, может чаще выбирать с начала списка. Эти темы бесконечны, так что если работает как надо, не трогай )
Помогите плиз с кодом для двойного рандома?
Мне нужно сначала получить случайное число сколько фоток просматривать, например 1-3
И потом получить не повторяющиеся значения какие фотки смотреть, от 1 до Х
Random rnd = new Random();
int[] array = Enumerable.Range(1, 9).ToArray();//Массив чисел от и до скольки генерировать
int[] array2 = new int[3];//Массив чисел которые не должны повторяться
int count = array2.Length - 1;
while (count >= 0)
{
int newInt = array[rnd.Next(0, array.Length)];
int newCount = array2.Where(x => x == newInt).Count();
if (newCount < 1) array2[count] = newInt;
count = array2.Where(x => x == 0).Count() - 1;
}
C#:Random rnd = new Random(); int[] array = Enumerable.Range(1, 9).ToArray();//Массив чисел от и до скольки генерировать int[] array2 = new int[3];//Массив чисел которые не должны повторяться int count = array2.Length - 1; while (count >= 0) { int newInt = array[rnd.Next(0, array.Length)]; int newCount = array2.Where(x => x == newInt).Count(); if (newCount < 1) array2[count] = newInt; count = array2.Where(x => x == 0).Count() - 1; }
var list = project.Lists["list"];
int count = 3+1;
return string.Join("\n", list.Distinct().OrderBy(x=>Guid.NewGuid()).Take(new Random().Next(1, count > list.Count ? list.Count : count)));
C#:var list = project.Lists["list"]; int count = 3+1; return string.Join("\n", list.Distinct().OrderBy(x=>Guid.NewGuid()).Take(new Random().Next(1, count > list.Count ? list.Count : count)));
IEnumerable<int> arrayIndex = Enumerable.Range(1, 100).OrderBy(x => Guid.NewGuid()).Take(10);