В недавнем ответе упоминалось использование генераторов случайных чисел Фортуны или Мерсенна Твистера ( RNG ) для создания симуляции Монте-Карло . Я не слышал о Фортуне раньше, поэтому я посмотрел его - похоже, он в основном предназначен для криптографического использования.
В настоящее время я использую Mersenne Twister в производственном коде для заполнения алгоритма K-Means.
Какой из них (Fortuna или Mersenne Twister) считается наилучшим для «алгоритмического посева» (например, посев Монте-Карло и K-Means)? Или это «подбрасывать» - т.е. использовать наиболее удобно.
С того места, где я сижу, «лучшие» должны обеспечивать случайные числа высшего качества, работать быстро и (возможно) иметь небольшой объем памяти. Из них качество, вероятно, является наиболее важным для большинства из нас.
RAND_MAX=32768
возможные значения. В настоящее время я использую MT для симуляции трассировки Монте-Карло. Тем не менее, я не вижу MT в качестве узкого места производительности в моем профилировщике, вероятно, потому что я делаю «случайное» генерирование таких вещей, как направления лучей, в качестве предварительного процесса . Например, я мог бы сгенерировать массив из 100 000 лучей при запуске, сохранить их в массиве и произвольно выбрать начальную позицию массива во время выполнения (для сбора около 10 000 лучей или около того). Это имеет относительно высокую нагрузку на память в обмен на хорошее распределение случайных чисел.