Генерация рандомных значений без всяких зависимости от начального и конечного числа - C#

Узнай цену своей работы

Формулировка задачи:

Имеется большая система линейных неравенств. Генерирую вектор рандомных чисел, чтобы неравенства стали верными.
Листинг программы
  1. int firstValue = 0;
  2. int lastValue = 2;
  3. Random rnd = new Random();
  4. for (int r = 0; r < colInequals; ++r)
  5. randomVector.Add(rnd.Next(firstValue, lastValue));
если через 5000 циклов не нашел нужных значений, увеличиваю lastValue на 1. Иногда нужные значения находятся почти сразу при начальном значении lastValue = 2, или при увеличенном на единицу. Однако, если не нашел сразу, генерирует 5000 векторов и ни один не удовлетворяет системе, пока lastValue не увеличится на 1. Векторы хоть и получаются рандомные, но, видно, с некой изюминкой, не позволяющей выдать нужные значения. Пробовал на каждой итерации проверки (не генерации) создавать новый объект (решение из stackoverflow.com):
Листинг программы
  1. rnd = new Random(Guid.NewGuid().GetHashCode());
или такой (из sdn.microsoft.com), перед которым задерживал поток:
Листинг программы
  1. Thread.Sleep(10);
  2. rnd = new Random((int) DateTime.Now.Ticks & 0x0000FFFF);
Не ничего не помогло. В чем причина проблемы и как её исправить?
Кстати такой момент если генерировать таким образом:
Листинг программы
  1. Thread.Sleep(10);
  2. rnd = new Random((int) DateTime.Now.Ticks & 0x0000FFFF);
то значения ищутся намного дольше, когда lastValue увеличивается до 20 и больше
Что-то такое закладывается в метод, генерирующий рандомные числа перед запуском приложения и это что-то потом не меняется. Я пробовал на каждой итерации проверки создавать новый объект
Листинг программы
  1. rnd = new Random()
и генерировать числа от 0 до 5, но вновь генерируемые числа никак не могут решить неравенства. По сути, это ведь не отличается от того, что я вручную запущу приложение, инициализируется такой же объект. Однако, если я перезапускаю приложение, то нужные значения через 5-10 итераций находятся.

Решение задачи: «Генерация рандомных значений без всяких зависимости от начального и конечного числа»

textual
Листинг программы
  1. var r = new Random(0);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы