Генерирование случайны чисел в С++

Аватара пользователя
bilytur

Генерирование случайны чисел в С++

Сообщение bilytur »

Существуют ли стандартные функции для генерации случайных чисел типа double в диапазоне от 0 до 1.
Аватара пользователя
Guest

Re: Генерирование случайны чисел в С++

Сообщение 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

#include

#include



/* 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;

}
Аватара пользователя
bilytur

Re: Генерирование случайны чисел в С++

Сообщение bilytur »

Если они такие "стандартные", то почему их нет у меня в MSVC++ 6.0 ?

Мелкомягкие забыли включить их в состав ?

Или у каждого производителя  свои "стандарты" ?

Какие "стандартные" функции есть в MSVC++ для генерации случайных чисел различной разрядности?



Это я так. Мысли вслух. Отвечать необязательно.

Ну, если только на последний вопрос. Изображение
Аватара пользователя
bilytur

Re: Генерирование случайны чисел в С++

Сообщение bilytur »

И все-же хотелось бы услышать ответ.


Цитата:



Существуют ли стандартные функции для генерации случайных чисел типа double в диапазоне от 0 до 1.
Аватара пользователя
shurikan

Re: Генерирование случайны чисел в С++

Сообщение shurikan »

bilytur



Код:

Код: Выделить всё

 
double R = double(random(0x3FFFFFFF)) / 0x3FFFFFFF;

Изображение
Аватара пользователя
bilytur

Re: Генерирование случайны чисел в С++

Сообщение bilytur »

shurikan



Твой способ генерит случайные числа из ограниченного множества не превышающего 0x3FFFFFFF, в то время как всех возможных чисел типа double гораздо больше.



Как я понял стандартных функций для генерации случайных чисел типа double в С нет Изображение
Аватара пользователя
shurikan

Re: Генерирование случайны чисел в С++

Сообщение shurikan »

bilytur

Воспользуйся типом __int64, значащими будут 63 разряда - диапазон double перекрыт, т.е. значений гораздо больше, чем влезет в double.

Изображение



[s]Исправлено: shurikan, 4:15 20-11-2003[/s]
Аватара пользователя
shurikan

Re: Генерирование случайны чисел в С++

Сообщение shurikan »

shurikan

Имхо чтоб был смысл в использовании __int64 нужно чтоб была функция:

__int64 random(__int64);



На самом деле дела обстоят еще хуже:

В MSVC 6 (не знаю как в других) никаких функций random(); randomize(); вообще нет!

Искал в MSDN - нет таких. В Инклудах - тоже нет.



Есть  int rand( void );

Функция rand() возвращает случайное число в диапазоне 0..32767 т.е. фактически short int.



Кстати при таком раскладе даже первый твой пример не прокатывает.
Аватара пользователя
shurikan

Re: Генерирование случайны чисел в С++

Сообщение shurikan »

bilytur

А ты из 4-х с помощью умножений и сложений не можешь сделать __int64???
Аватара пользователя
shurikan

Re: Генерирование случайны чисел в С++

Сообщение shurikan »

Можно конечно и с помощью умножений и сложений...

Можно и вообще свой генератор написать...

Только вопрос был вроде о стандартных функциях.

А их НЕТ.

Точка. Изображение
Ответить

Вернуться в «Программирование и базы данных»