Как сгенерировать псевдослучайное число между A и B (A, B - int) в GNU C просто с помощью стандартной библиотеки - PullRequest
3 голосов
/ 08 декабря 2010

Как сгенерировать псевдослучайное число от A до B (A, B - int) в GNU C только с помощью стандартной библиотеки

Спасибо!

Ответы [ 2 ]

6 голосов
/ 08 декабря 2010

Если предположить, что A srand((unsigned)time(NULL)); r = (rand()%(B-A)) + A; Согласно комментариям ниже, возможно, что BA на самом деле больше, чем RAND_MAX.В этом случае вам нужно быть более осторожным.

3 голосов
/ 08 декабря 2010

Вы должны заполнить генератор случайных чисел srand только один раз , а затем получить случайные числа с rand. Функция rand возвращает числа от 0 до некоторой константы RAND_MAX; Вы несете ответственность за отображение результатов на желаемый диапазон. Традиционный способ сделать это с помощью оператора модуля, который дает остаток, полученный в результате целочисленного деления. Так, например, если вы хотите получить 7 разных результатов, вы берете rand() % 7, и результатом будет один из (0, 1, 2, 3, 4, 5, 6) - возможных остатков при делении на 7. (Примечание что их 7). Затем вы добавляете смещение, чтобы создать желаемый диапазон результатов, как в примере Эндрю Уайта.

Самый простой способ убедиться, что srand вызывается только один раз, это сделать в начале или в начале main ().

Для получения дополнительной информации см. Документацию по этим функциям.

...