| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Действительные числа и random |
| Автор: Metalex 5.12.2009, 19:53 |
| Может ли random возвращать действительные числа? Если нет, то можно ли как-то их сгенерировать? |
| Автор: Abyx 5.12.2009, 20:35 |
| 1/rand() число в интервале [0;1) |
| Автор: Metalex 5.12.2009, 21:02 |
| Abyx, хорошая идея! Добавлено через 9 минут и 7 секунд Хотя теперь числа неслучайными стали............. |
| Автор: Abyx 5.12.2009, 21:30 |
| Metalex, они остались случайными. или дай свое определение случайного числа |
| Автор: Metalex 5.12.2009, 21:34 |
| Я код оставил такой же, только изменил как ты сказал, теперь все числа максимум на 1-2 друг от друга отличаются. А до того все было в порядке. |
| Автор: Pitlord 5.12.2009, 22:49 |
В знаменателе ещё единичку бы прибавить |
| Автор: bsa 5.12.2009, 22:50 | ||||
Чтобы получить равномерное распределение в пределах [0;1) (для тех, кто забыл, это значит значение 0.0 может присутствовать, а значение 1.0, нет), делать надо так:
Добавлено через 1 минуту и 6 секунд Код в принципе неверный, так как результатом rand() может быть 0. А делить на 0 нельзя. |
| Автор: Abyx 5.12.2009, 23:08 |
| bsa, это концепция, а детали реализации ТС пусть додумывает сам |
| Автор: bsa 5.12.2009, 23:11 |
| Abyx, согласись, что деление расстояния на время более правильное действие для вычисления скорости, чем деление времени на расстояние. |
| Автор: Abyx 5.12.2009, 23:12 |
| для полноты картины стоит заметить, что в msvc в вин32 rand() выдает 16 бит, что весьма мало для 32-разрядного float и чем более для 64-разрядного double впрочем ТС не писал сколько бит ему надо, может и 16 достаточно Добавлено через 9 минут и 9 секунд bsa, согласен, у 1/x не равномерное распределение, тут я был неправ |
| Автор: Metalex 6.12.2009, 01:58 | ||
RAND_MAX нужно обьявлять? или оно само вычисляется. Генерато случайных чисел у меня работает так:
|
| Автор: bsa 6.12.2009, 15:41 |
| Metalex генератор случайных чисел - находится внутри rand(). Использование операции % не дает равномерного распределения (т.е. вероятность каких-то значений выше, чем других). RAND_MAX определен в <stdlib.h> Почему не читаем документацию? |
| Автор: Metalex 6.12.2009, 21:18 |
| bsa, читаем.. |
| Автор: bsa 6.12.2009, 21:29 |
| незаметно. |