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

написал прогу на си с использованием рандома. всё работает, но всегда выводятся одни и те же числа.

switch (c1){
case 'c': {i= 10 + rand()%(35+k); printf("copper sword\n");
break;}
break;
case 'i': {i= 30 + rand()%(100+k); printf("iron sword\n");
break;}
case 'g': {i= 90 + rand()%(250+k); printf("golden sword\n");
break;}
default: i=0;
}
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
srand(time(NULL));
printf("%d\n", rand() % 10);
}

Ну ты понял, что нужно делать?
Ричард Риддик
Ричард Риддик
91 526
Лучший ответ
Без теории - никуда.
https://www.videosharp.info/article/sharp/id=522
Для получения последовательности случайных чисел в языке C# имеется класс Random. Этот класс предусматривает два конструктора:
- Random() - инициализирует экземпляр класса Random с помощью начального значения, зависящего от текущего времени. Вемя может быть представлено в тиках - 100-наносекундных импульсах, начиная с 1 января 0001 года. И значение времени в тиках представляет собой 64-битное целое число, которое и будет использоваться для инициализации экземпляра генератора случайных чисел.
- Random(Int32) - инициализирует экземпляр класса Random с помощью указанного начального значения. Такая инициализация генератора случайных чисел может быть удобна на этапе отладки программы, поскольку в этом случае при каждом запуске программы будут генерироваться одни и те же "случайные" числа.

Основным методом данного класса является метод Next(), позволяющий получить случайное число и имеющий ряд перегрузок:
- Next() - возвращает случайное целое неотрицательное число формата Int32.
- Next(Int32) - возвращает случайное целое неотрицательное число, которое меньше указанного значения.
- Next(Int32 min, Int32 max) - возвращает случайное целое число в указанном диапазоне. При этом должно соблюдаться условие min<max (первый аргумент должен быть меньше второго).

А также методы
- NextBytes(Byte[]) - заполняет элементы указанного массива байтов случайными числами.
- NextDouble() - возвращает случайное число с плавающей запятой, в диапазоне [0,0; 1,0).
Stiphler Stiphler
Stiphler Stiphler
27 562
Ilgiz Tursunbekovich тема по си, а не си шарп
rand() использует для генерации случайных чисел LFSR:

https://ru.wikipedia.org/wiki/Регистр_сдвига_с_линейной_обратной_связью

который всегда даёт одну и ту же последовательность.
To'htamurod Bahromov
To'htamurod Bahromov
26 548
Профессионалы почему-то часто используют нестандартные генераторы случайных чисел - это не сильно сложные формулы. Также можно использовать заранее сгенерированный массив случайных чисел (100 вполне хватает) из математической программы, а начальную точку входа в массив брать как секунды системного времени при запуске программы.
Виктор Якушов
Виктор Якушов
23 766
Константин Бакович Массив на 100 чисел ничем не лучше, чем встроенный генератор псевдослучайных чисел.
Это генератор псевдослучайных чисел, на самом деле они не случайные. Надо делать Randimize(seed), где seed -- миллисекунды системных часов например.

говнокод на тему -