Как я могу генерировать семя или хеш, которые сделали бы rand на самом деле случайным? Мне нужно, чтобы он менялся каждый раз, когда он выбирал номер. Новое в C++, поэтому я не совсем уверен, как это сделать. Благодаря! : DКак бы я сделал случайное семя/хеш, чтобы сделать Rand на самом деле случайным?
ответ
Существует не такая вещь, как «фактически случайный» генератор случайных чисел без выборочных данных об окружающей среде или доступа к источнику квантового случайного числа. Рассмотрите возможность доступа к источнику случайных чисел ANU, если вам требуются действительно случайные числа (http://qrng.anu.edu.au/FAQ.php#api).
В противном случае, подталкивания обеспечивает более надежный псевдо-ГСЧ, который должен быть достаточным для большинства целей: http://www.boost.org/doc/libs/1_58_0/doc/html/boost_random.html
Обратите внимание, что большая часть форсирования random была стандартизована с помощью C++ 11, и к ней можно получить доступ через '
С C++ 11 вы можете использовать std::random_device
. Я предлагаю вам посмотреть link для получения исчерпывающего справочника.
Распаковка существенное сообщение по ссылке видео: Вы должны никогда использование srand
& rand
, но вместо того, чтобы использовать std::random_device
и std::mt19937
- в большинстве случаев, следующее будет то, что вы хотите:
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_int_distribution<int> dist(0,99);
for (int i = 0; i < 16; i++) {
std::cout << dist(mt) << " ";
}
std::cout << std::endl;
}
- 1. C rand() на самом деле не случайный
- 2. Почему rand() на самом деле не случайный?
- 3. Python - случайное это на самом деле не случайным
- 4. RandomaAccessFile, что на самом деле случайное?
- 5. Что на самом деле сделал этот код?
- 6. Я хотел бы знать, как на самом деле работает WebKitCSSMatrix
- 7. Как проверить, чтобы сделать сборку на самом деле параллельна окнам?
- 8. Что на самом деле означает определение?
- 9. Как я на самом деле BOND устройства?
- 10. Как бы я сделал прямоугольник?
- 11. Как бы я сделал кнопку?
- 12. Новичок на самом деле
- 13. combobox всегда на самом деле
- 14. Как получить это выпадающее меню, чтобы на самом деле «опуститься»
- 15. Как на самом деле перехватить res.render
- 16. Код JQuery, как бы я это сделал?
- 17. Как сделать случайное событие случайным образом на Java?
- 18. Как на самом деле работает make -j?
- 19. Как я могу получить cd | cbpaste на самом деле cd?
- 20. Что на самом деле $ RPM_BUILD_ROOT?
- 21. Как предотвратить openConnection(), чтобы на самом деле подключиться
- 22. Как получить XmlTextWriter, чтобы на самом деле написать & (без CDATA)
- 23. Как сделать контактную форму AJAX на самом деле отправкой почты?
- 24. Как сделать отладочную работу Chrome на самом деле работать
- 25. На самом деле воспроизводится звук?
- 26. Как бы я сделал это наилучшим образом?
- 27. Что на самом деле означает?
- 28. Как DLL на самом деле делится?
- 29. Как на самом деле использовать шаблон выражения
- 30. Как на самом деле * писать мощности UML?
@DevanshMohanKaushik - Связанный вопрос/ответы в предлагаемом дубликате - это плохое предложение, поскольку они выступают за использование времени в качестве семени - что является плохой практикой и может привести к дублированию случайного оцепенения (между веб-серверами) – Soren
@soren также содержит ссылки на другие полезные ответы, включая тот, который вы упомянули в разделе «Коментарий». – Hummingbird
Этот вопрос предназначен для C++, в то время как отмеченный дубликат запрашивает C. –