Другие языки программирования и технологии

Почему не работает Random на Си

Don Sanqre
Don Sanqre
516
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
int main(void) {
int vector[SIZE], i;
srand((unsigned)time(NULL));
for (i = 0; i < SIZE; ++i) vector[i] = 1 + rand() % 9;
for (i = 0; i < SIZE; ++i) printf(" %d ", vector[i]);
printf("\n");
getchar();
return 0;
}
Мы И Только
Мы И Только
68 190
Лучший ответ
Don Sanqre что значит #define ?
Ты работаешь с переменной за пределами массива - раз, это уже нехорошо. Два - ты присваиваешь ей случайное значение, а потом десять раз выводишь это значение не изменяя.
Эльвин Агаев
Эльвин Агаев
76 239
поясните мне, разве можно присваивать значение сразу всему массиву в си? т. е. вот это место
м [10]=rand и так далее. и вроде печатает тоже м [10] только.
Don Sanqre можно так. хахаха я понял, Надо дописать в начале include это библиотека специально для рандома
Don Sanqre stdiolib.h
Давайте попробуем разобраться что вы тут написали и как это исправить.
Строкой for(f=0; f<10; f++){} вы создаете масив в котором:
строка M[10]=(rand%9)+10 сохраняет в масив с именем М в 10-тую ячейку рандомное число от 10 до 18 включительно. Потом же вы делаете другой цикл и опять же эту одну ячейку под номером десять выводите 10 раз на экран. Рандом работает! А если исправить, то я не вижу смысла в двух циклах. и в цикле надо писать М [номер ячейки]
куда писать. А так как у нас в цикле переменная f прибавляется на один на каждой интерации цикла то цикл записи десяти рандомных чисел в масив будет выглядеть так:
for(f=0; f<10; f++){
M[f]=(rand()%9)+10;
}
А если еще и добавить сюда вывод на экран содержимого, то второй цикл не нужен.
for (f=0; f<10; f++){
M[f]=(rand()%9)+10;
printf("%d\n",M[10]);
}
Слишком быстро просигходит присваивание, тебе нужен seed какой-то оооочень денамический

Вроде-бы синтексических ошибок нет, поправте если ошибаюсь
Don Sanqre хахаха я понял, Надо дописать в начале include это библиотека специально для рандома
Don Sanqre stdiolib.h