Объясните , что делает srand() ? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <stdlib.h>
 
main ()
{   
    int a , b, seed;
    //unsigned seed;
    
    for( ; ; )
    {
        a = (1 + rand() % 9);
        b = (1 + rand() % 9);
        printf("How much is %d times %d ? \n", a, b);
        scanf("%d", &seed);
        //srand(seed);
        if (seed == a * b)
            printf("ok\n\n ");
        else printf("bad, try again\n\n");

    }
 
}
как я понял , он рандомизирует прогу , но когда написал эту программу , то выяснилось , что и без него нормально рандомит. Объясните , пожалуйста , в чем я ошибаюсь ?

Решение задачи: «Объясните , что делает srand() ?»

textual
Листинг программы
void __cdecl srand (
        unsigned int seed
        )
{
        _getptd()->_holdrand = (unsigned long)seed;
}
 
 
int __cdecl rand (
        void
        )
{
        _ptiddata ptd = _getptd();
 
        return( ((ptd->_holdrand = ptd->_holdrand * 214013L
            + 2531011L) >> 16) & 0x7fff );
}

Объяснение кода листинга программы

  1. srand() — это функция, которая инициализирует генератор случайных чисел в языке программирования C.
  2. srand() принимает один аргумент — seed, который является начальным значением для генератора случайных чисел.
  3. srand() сохраняет seed в поле _holdrand внутри структуры _ptiddata, связанной с текущим потоком.
  4. rand() — это функция, которая генерирует случайное целое число.
  5. rand() возвращает случайное целое число в диапазоне от 0 до 32767 (0x7fff).
  6. rand() использует поля _holdrand и _ptiddata для генерации случайного числа.
  7. rand() вычисляет новое значение _holdrand, умножая текущее значение _holdrand на 214013 и добавляя 2531011, а затем сдвигает результат вправо на 16 бит.
  8. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  9. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  10. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  11. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  12. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  13. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  14. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  15. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  16. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  17. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  18. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  19. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.
  20. rand() возвращает новое случайное число, ограничивая его до 16-битного значения.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы