Я написал программу, которая генерирует 4 случайных цифры, которые должны появляться на экране следующим образом: от 0000 до 9999 (не в порядке возрастания обязательно, конечно!).Создание неравных случайных чисел в C
Проблема в том, что я столкнулся с числами, которые равны друг другу. Как я могу это исправить? Я просто хочу произвести 10.000 номеров в диапазоне от 0000 до 9999, но не в любом порядке: просто «случайный».
Вот что я написал до сих пор:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#define SIZE 10000
int main(){
srand(time(NULL));
int a[SIZE], b[SIZE], c[SIZE], d[SIZE], i;
FILE *fd = fopen("combinations_rand.txt", "w");
assert(fd);
for(i=0; i<SIZE; i++){
a[i] = rand()%10; //array of first digits
b[i] = rand()%10; //array of second digits, etc...
c[i] = rand()%10;
d[i] = rand()%10;
fprintf(fd, "%d%d%d%d\n", a[i], b[i], c[i], d[i]);
}
fclose(fd);
}
Вы имеете ответ, вы говорите не в любом порядке ... это просто переупорядочение. –
Если вы не хотите дублировать, то вам не нужно * случайное число *, вы хотите, чтобы * заданный * набор чисел * в случайном порядке *. –
Когда я запускал программу, я имел номер 0844 два раза. И я не думаю, что только это число появляется дважды. Предположим, что я произвел числа таким образом: 0000, 0001, ..., 9999, не случайно. Как я могу их переупорядочить, чтобы казаться случайным? (вопрос к вашему комментарию.) – George