|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Генерирование случайны чисел в С++ |
|
|
Генерирование случайны чисел в С++
|
Belka007
Сообщения: n/a |
Существуют ли стандартные функции для генерации случайных чисел типа double в диапазоне от 0 до 1.
|
|
Отправлено: 15:29, 12-11-2003 |
Guest |
Header File
stdlib.h Category Math Routines Prototype int random(int num); Description Random number generator. random returns a random number between 0 and (num-1). random(num) is a macro defined in stdlib.h. Both num and the random number returned are integers. Return Value random returns a number between 0 and (num-1). //========================================= /* random example */ #include <stdlib.h> #include <stdio.h> #include <time.h> /* prints a random number in the range 0 to 99 */ int main(void) { randomize(); printf("Random number in the 0-99 range: %d\n", random (100)); return 0; } |
Отправлено: 18:11, 12-11-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать И все-же хотелось бы услышать ответ.
Цитата:
|
|
Отправлено: 02:10, 17-11-2003 | #3 |
Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 04:27, 18-11-2003 | #4 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать shurikan
Твой способ генерит случайные числа из ограниченного множества не превышающего 0x3FFFFFFF, в то время как всех возможных чисел типа double гораздо больше. Как я понял стандартных функций для генерации случайных чисел типа double в С нет |
|
Отправлено: 00:28, 19-11-2003 | #5 |
Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать bilytur
Воспользуйся типом __int64, значащими будут 63 разряда - диапазон double перекрыт, т.е. значений гораздо больше, чем влезет в double. [s]Исправлено: shurikan, 4:15 20-11-2003[/s] |
------- Отправлено: 03:14, 20-11-2003 | #6 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать shurikan
Имхо чтоб был смысл в использовании __int64 нужно чтоб была функция: __int64 random(__int64); На самом деле дела обстоят еще хуже: В MSVC 6 (не знаю как в других) никаких функций random(); randomize(); вообще нет! Искал в MSDN - нет таких. В Инклудах - тоже нет. Есть int rand( void ); Функция rand() возвращает случайное число в диапазоне 0..32767 т.е. фактически short int. Кстати при таком раскладе даже первый твой пример не прокатывает. |
Отправлено: 01:32, 21-11-2003 | #7 |
Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать bilytur
А ты из 4-х с помощью умножений и сложений не можешь сделать __int64??? |
------- Отправлено: 03:47, 21-11-2003 | #8 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Можно конечно и с помощью умножений и сложений...
Можно и вообще свой генератор написать... Только вопрос был вроде о стандартных функциях. А их НЕТ. Точка. |
Отправлено: 00:21, 22-11-2003 | #9 |
Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать bilytur
Ты что-то путаешь. Есть стандартные алгоритмы генераторов случайных чисел. Да, в них используются целочисленные операнды. Любой алгоритм можно представить для чисел различной разрядности. Если ты будешь реализовывать этот алгоритм для чисел длиной 53 бита, то результат можно рассматривать как мантиссу числа с плавающей точкой. Чем не стандартный алгоритм для чисел типа double? Многоточие... Добавлено: Да, если говорить о "стандартных" функциях типа rand у Borland-а, то у кого-то их нет. Т.е. эти функции не являются стандартными. Но такие функции всё-таки входят в состав библиотек. Например в GCC в файле stdlib.h (обрати внимание на префикс std - я так думаю, имеется ввиду "стандартная библиотека" есть объявление следующих функций: double drand48(void); double erand48(unsigned short state[3]); unsigned long lrand48(void); unsigned long nrand48(unsigned short state[3]); long mrand48(void); long jrand48(unsigned short state[3]); void srand48(long seed); unsigned short *seed48(unsigned short state_seed[3]); void lcong48(unsigned short param[7]); |
------- Отправлено: 04:20, 22-11-2003 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Assm - Сложение двух чисел | Rebel666 | Программирование и базы данных | 8 | 22-04-2012 17:30 | |
C/C++ - Последовательность чисел | denver-312 | Программирование и базы данных | 7 | 02-01-2008 20:54 | |
VBA - Перевод чисел в текст прописью | Goshar | Программирование и базы данных | 2 | 22-12-2007 16:00 | |
Генератор случайных чисел | Murrey | Хочу все знать | 3 | 22-08-2006 13:00 | |
сортировка чисел | slaine | Вебмастеру | 12 | 18-02-2006 20:17 |
|