Я ищу для создания генератора случайных чисел Mersenne Twister в проекте. Однако, поскольку это для встроенного приложения, я позже буду оптимизировать код для моей архитектуры. Тем не менее, я могу найти небольшую документацию о том, как работает код, и я почти уверен, что это не пыль и волшебство. Есть ли хорошая документация, которую я, возможно, не замечаю? Блок-схемы были бы хороши. Если нет, я был бы признателен, если бы кто-нибудь мог дать мне пошаговое объяснение алгоритма. Благодаря!Объяснение алгоритма Mersenne Twister
-1
A
ответ
0
Для фактического объяснения потребуется сначала несколько лет, чтобы получить математическую степень, но я могу дать вам свою версию основного кода состояния с ojrandlib, что проще, чем большинство из того, что вы найдете в сети , Моя структура g
сохраняет состояние генератора: g->state
является сам вектор состояния МТ, g->buf
представляет собой выходной буфер из возвращенных случайных битов:
int i, j, k, n = g->statesize;
uint32_t y, m, *s = g->state, *bp = g->buf + g->bufsize;
for (i = 0; i < n; ++i) {
j = i + 1; if (j >= n) j -= n;
k = i + 397; if (k >= n) k -= n;
m = (s[j] & 1) ? 0x9908b0df : 0;
s[i] = m^s[k]^(((s[i] & 0x80000000) | (s[j] & 0x7FFFFFFF)) >> 1);
}
for (i = 0; i < n; ++i) {
y = s[i]^(s[i] >> 11);
y ^= (y << 7) & 0x9d2c5680U;
y ^= (y << 15) & 0xefc60000U;
*--bp = y^(y >> 18);
}
0
Есть целый ряд статей по алгоритму позади генератора Мерсенн Twister случайных чисел перечисленные на Mersenne Twister site. Вы также можете найти сжатое объяснение в Википедии.
Смежные вопросы
- 1. Mersenne twister seed as
- 2. equidistribution in mersenne twister
- 3. О Mersenne Период генератора Twister
- 4. Как Python семя Mersenne twister
- 5. Mersenne Twister: посев и визуализация
- 6. Какой Mersenne Twister делает C++ 11?
- 7. Недопустимый аргумент для mersenne twister :: seed (C++)
- 8. Поселение Mersenne Twister в веб-сервисе
- 9. Mersenne Twister seed в качестве переменной-члена
- 10. Mersenne Twister seed не имеет эффекта
- 11. Использует ли array_rand алгоритм Mersenne Twister?
- 12. Что делает функцию Mersenne Twister Tempering обратимой?
- 13. Воспроизводимость Mersenne Twister для всех компиляторов
- 14. Сравнение Mersenne Twister в Java и matlab
- 15. Каков диапазон Mersenne Twister в Java?
- 16. Как генерировать неперечисленные случайные величины Mersenne Twister
- 17. Сравнение SFMT с Mersenne Twister и Ran2
- 18. C++ Mersenne Twister и случайные числа lib
- 19. Mersenne Twister & получение семантической проблемы в алгоритме.h
- 20. rand() и реализация Mersenne Twister C++
- 21. Как запустить Mersenne Twister внутри функции?
- 22. cuRand Mersenne twister __device__ пример кода ядра ядра
- 23. Существуют ли стабильные реализации Objective-C алгоритма Mersenne Twister для случайности?
- 24. Boost Mersenne Twister: как посеять более чем одно значение?
- 25. Почему Mersenne twister быстрее, чем линейный конгруэнтный генератор?
- 26. Генерация случайных чисел в C с использованием Mersenne twister
- 27. Самое большое семя, возможно, для Mersenne Twister C++
- 28. Работа с открытым исходным кодом Mersenne Twister в Python?
- 29. Случайный реальный в [0..1 [используя Mersenne Twister
- 30. std :: mt19937 mersenne twister distribution with non repeating values