0?
Тут упоминали игру "Угадай число", встретившуюся в моей программе. Эту игру я "слизал" с учебника, почти ничего не изменив в ней. Если вы считаете, что это так просто, то это не так. Я перевел ее с Turbo C под MS-DOS на Visual C++ 6.0 под Windows 95, и при этом пришлось учесть два новых для меня момента. Во-первых, пришлось ввести дополнительный счетчик числа нажатий <Enter> (а до этого такой переменной не было). Во-вторых, пришлось запустить специальную функцию генерации случайного числа. И не факт, что она заработала бы. Половина функций MS-DOS в Windows не работает. Например, не работает функция randomize (), хотя работает rand ().
А вообще функция получения случайного числа работает в Windows как-то по-другому, я не знаю, как. Сия тайна великая есть, не объясненная в учебниках.
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Комментарии 21
В учебнике говорят, что есть заголовок функции. А есть ли исходный код - не говорят. И где его искать?
Хотя нужны они довольно часто - например, чтобы создавать исходные данные со случайными параметрами в известных границах. И в играх в том числе.
К тому же, не надо мнить себя умней людей которые написали стандартные функции. Их используют миллионы людей по всему миру и они точно хорошо работают.
Алгоритмы генерации псевдослучайных чисел описаны в интернете.
unsigned int seed
)
{
_getptd()->_holdrand = (unsigned long)seed;
}
/***
*int rand() - returns a random number
*
*Purpose:
* returns a pseudo-random number 0 through 32767.
*
*Entry:
* None.
*
*Exit:
* Returns a pseudo-random number 0 through 32767.
*
*Exceptions:
*
*******************************************************************************/
int __cdecl rand (
void
)
{
_ptiddata ptd = _getptd();
return( ((ptd->_holdrand = ptd->_holdrand * 214013L
+ 2531011L) >> 16) & 0x7fff );
}