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