ОК, я работал со случайным селектором изображений и системой очередей (поэтому вы не видите одни и те же изображения слишком часто).
Все шло гладко (насколько мой дерьмовый код) до Я дошел до случайного бита. Я хотел это проверить, но как ты это делаешь? Нет Debug.Assert(i.IsRandom)
(к сожалению): D
Итак, после того, как я полил его чаем, у меня возникли мысли, и мне пришло в голову следующее: мне было просто интересно, могу ли я подумать?
- По сути, я знал, что проблема была в бите random , поэтому я разорвал его делегату (который затем был бы передан конструктору объектов).
- Затем я создал класс, который в значительной степени выполняет ту же логику, что и код live , но запоминает значение, выбранное в закрытой переменной.
- Затем я бросил этого делегата в живой класс и проверил:
* * Тысяча двадцать-одиной т.е.
Debug.Assert(myObj.RndVal == RndIntTester.ValuePassed);
Но я не мог не подумать, я тратил впустую свое время? Я провел это через множество итераций, чтобы посмотреть, не упало ли оно в любое время и т. Д.
Как вы думаете, я тратил свое время на это? Или я мог бы сойти с рук:
![Awesome Random Number Generator](https://imgs.xkcd.com/comics/random_number.png)
Ответ GateKiller напомнил мне об этом:
![Dilbert Random](https://www.random.org/analysis/dilbert.jpg)
Обновление до уточнения
- Я должен добавить, что в принципе я никогда не хочу видеть один и тот же результат более X раз из пула размера Y.
- Добавление тестового контейнера в основном позволило мне увидеть, было ли какое-либо из ранее выбранных изображений «случайно» выбрано.
- Технически, я думаю, здесь тестируется не ГСЧ (поскольку я никогда не писал этот код), а тот факт, что я ожидаю случайных результатов от ограниченного пула, и я хочу их отслеживать.