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

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

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

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

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

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

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


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

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

8   голосов , оценка 4.375 из 5
Похожие ответы