Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 11.02.2013
Сообщений: 10

Запись текста и генерация случайного числа

11.02.2013, 07:43. Показов 1554. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно задача такая: записать строки с рандомными числовым значением в некоторое количество создаваймых файлов.
Файлы создаются без проблем, но по какой-то причине все соответственные рандомные числа одинаковы!

Например, вывод должен быть примерно таким:
baseline=63
baseline=58
baseline=67
...

Но он такой:
baseline=63
baseline=63
baseline=63

Вот сырцы

Ошибка наврное где-то в этих методах,но я не могу понять где
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void flat::write_str(ofstream *f, string str, string str2)
{
    if (f->is_open())
  {
        if (str2 != "") *f<<str<<"=" + str2<<endl;
        else *f<<str<<endl;
        cout<<str<<"=" + str2<<endl;
  }
    else cout<< "Ошибка записи файла" << endl;
 
}
 
string flat::sRnd(int min, int max)
{
     if ((max-min)==0) max+=max;//Если max и min совпадают, увел max в 2 раза, чтобы исключить деление на 0
     
     srand(time(NULL));
     int n;
     n = rand() % (max - min) + min;//генерация числа в диапазоне min-max
     
     stringstream out;//Преобразование int в string
     out << n;
     
     return out.str();
}
Вложения
Тип файла: zip mcGen.zip (2.2 Кб, 2 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2013, 07:43
Ответы с готовыми решениями:

Генерация случайного числа, максимально случайного
Добрый день, задался вопросом как получить случайное число, но не псевдо-случайное по идее функции rand() и srand(time(NULL))...

Генерация случайного числа
Сори за вопрос может уже обсуждался не раз, но всё же возник. Как правильно сгенерировать число от 0 до 1 и какой тип данных лучше...

Генерация случайного числа
Проблемма такова: в программе необходимо получить несколько чисел, от 1 до 255 (или max будет другим -- пока не важно). Стандартные...

3
1 / 1 / 0
Регистрация: 11.02.2013
Сообщений: 10
11.02.2013, 08:31  [ТС]
oO
Поставил точку остановки в методе flat::sRnd чтобы проверить генерируемое число и вывод в файлы вдруг произошел как надо, но обычный запуск приводит к выводу одинаковых значений.

Добавлено через 11 минут
Я понял в чем дело, srand(time(NULL)) берет одно и то же число из time(), но как исправить это не знаю, кроме как вызывать ее с задержкой, что очень сильно замедляет программу.

Добавлено через 16 минут
Ура, нашел решение()
C++
1
2
3
4
5
6
...     
long long x;
asm("rdtsc" : "=A"(x));
 
srand(x);
...
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,927
Записей в блоге: 5
11.02.2013, 08:36
Обычно функцию srand вызывают только один раз -- в самом начале программы. Вызванная после этого несколько раз функция rand даст различные значения. А если вы вызовете функцию srand с одним и тем же параметром, то вы потом получите одну и ту же последовательность "случайных" чисел.

Добавлено через 5 минут
Цитата Сообщение от -WinnieThePooh- Посмотреть сообщение
rdtsc
Обычно для этого используют функцию Windows GetTickCount
1
15 / 13 / 0
Регистрация: 24.01.2013
Сообщений: 23
11.02.2013, 09:26
вы можете просто прикрутить свой генератор случайных чисел, например такой как обсуждалось тут несколько дней назад:
C++
1
2
3
4
5
6
7
int rnd(int limit)
{
    long a=214013, c=2531011,m=2147483648;
    static double x=fmod((a*time(NULL)+c),m);
    x=fmod((a*x+c),m);
    return (int)fmod(x/65536,limit);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2013, 09:26
Помогаю со студенческими работами здесь

Генерация случайного простого числа
Добрый вечер всем! У меня такая проблемма. Необходимо чтобы сгенерировалось 2 простых случайных числа. Для этого я написал функцию с...

Генерация пятизначного случайного числа
Нужно сгенерировать случайное число из пяти цифр и записать ее в переменную типа string. Пытаюсь 5 генерировать цифры в цикле, а как их...

Генерация случайного числа с плавающей чточкой
Добрый день. Подскажите как генерировать случайное число типа float или double. Обычно использую rand(), но она подходит только для целых,...

Генерация случайного числа каждую секунду
Нужно каждую секунду генерировать случайное число. Ниже мой код, который выполняет задачу, но функция слип останавливает весь процесс и в...

Генерация случайного числа при запуске программы
Доброго всем времени суток. В данный момент потихоньку осваиваю C++ и столкнулся с такой вещью, что при использовании srand( (time(0) )...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru