Генерация случайных чисел в C - PullRequest
0 голосов
/ 02 февраля 2011

Я хочу сгенерировать 2 случайных числа от 0 до 20

int one = rand() % 20;

это дает мне 1 устойчивое значение, т.е. 1 ...

Я что-то упустил?

Ответы [ 3 ]

2 голосов
/ 02 февраля 2011

Это произойдет, если count равен единице.
Если count не одно, ваш код отлично работает .

Однако, как уже упоминалось, вам нужно установить недетерминированное начальное число, вызвав srand.

2 голосов
/ 02 февраля 2011

Вы должны дать семя случайному числу.

srand( time(NULL) );
int num1 = rand() % count;


int num2 = rand() % count;

Случайное число от 1 до 20

int num = rand() % 20 ;

if( num == 0 )
    num += 2;

else if( num == 1 )
    ++num ;
1 голос
/ 02 февраля 2011

Чтобы сгенерировать случайное число в указанном диапазоне [мин, макс], сделайте что-то вроде:

min + (int)((double) rand() / RAND_MAX * (max - min + 1));

Метод

min + rand() % (max - min + 1);

может бытьбыстрее, но это может не дать вам нормальное распределение значений в зависимости от ГСЧ.

И, как уже упоминали другие, если вы хотите различную последовательность для каждого запуска, выполните srand один раз в начале программы.

...