Форум программистов, компьютерный форум CyberForum.ru

Как генерить монотонно возрастающие числа? - C++

Восстановить пароль Регистрация
 
 
newbie666
Заблокирован
02.09.2013, 11:56     Как генерить монотонно возрастающие числа? #1
Привет! Суть проблемы такова. Надо генерить длинные (long long) числа, чтоб они были всё время разные и плавно возрастающие. Генериться они должны всегда правильно, вне зависимости от того, сколько раз подряд была запущенна программа, сколько раз компьютер был перезагружен и тд... Понятно, что в принципе тут надо завязываться на дату, но тут так же возникает проблема - если этот генератор запускать в цикле, то текущее время просто не успевает обновится и номера остаются одинаковыми....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2013, 11:56     Как генерить монотонно возрастающие числа?
Посмотрите здесь:

Элементы монотонно возрастают C++
Из заданной числовой последовательности выделить монотонно неубывающую подпоследовательность максимально возможной длины C++
Распечатать возрастающие серии последовательности в обратном порядке C++
Нужно вывести все возможные возрастающие 6-ти значные комбинации C++
Visual Studio: Вывести номера столбцов матрицы, элементы которых образуют монотонно убывающую или монотонно возрастающую последовательность C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
02.09.2013, 12:00     Как генерить монотонно возрастающие числа? #2
легче тогда завязать не на время, а просто при выходе программы сохранять последнее значение в файл например
newbie666
Заблокирован
02.09.2013, 12:09  [ТС]     Как генерить монотонно возрастающие числа? #3
Цитата Сообщение от Raali Посмотреть сообщение
просто при выходе программы сохранять последнее значение в файл например
ну так то оно так, но в моём случае возможен крах системы и соответственно все файла тоже крякнут... А хотелось бы не завязываться на локал хост, а просто получать дату и время с сервера например или ещё как - то ...
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 1
02.09.2013, 12:13     Как генерить монотонно возрастающие числа? #4
Цитата Сообщение от newbie666 Посмотреть сообщение
... если этот генератор запускать в цикле, то текущее время просто не успевает обновится и номера остаются одинаковыми....
обычно генератор случайных чисел 1 раз инициализируется(текущим временем), а потом генерериуются ичсла из псвевдослучайной последовательности

http://www.cplusplus.com/reference/c...rand/?kw=srand
newbie666
Заблокирован
02.09.2013, 12:17  [ТС]     Как генерить монотонно возрастающие числа? #5
Цитата Сообщение от vndtta Посмотреть сообщение
обычно генератор случайных чисел 1 раз инициализируется(текущим временем), а потом генерериуются числа из псвевдослучайной последовательности
Всё верно, но этот номер может повторится при повторном запуске программы.... А если учесть, что программа будет запускаться тысячи раз, то уникальность случайных номеров, даже в формате long long ставится под вопрос....
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.09.2013, 12:20     Как генерить монотонно возрастающие числа? #6
Меня вообще смущают в одном контексте слова "случайные" и "монотонно возрастающие".
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.09.2013, 12:21     Как генерить монотонно возрастающие числа? #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Меня вообще смущают в одном контексте слова "случайные" и "монотонно возрастающие".
более того,
Цитата Сообщение от newbie666 Посмотреть сообщение
плавно возрастающие.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
02.09.2013, 12:25     Как генерить монотонно возрастающие числа? #8
Цитата Сообщение от vndtta Посмотреть сообщение
Всё верно, но этот номер может повторится при повторном запуске программы
одной и той же даты, учитывая год, быть 2 раза не может) только в другом измерении наверное

Цитата Сообщение от 0x10 Посмотреть сообщение
Меня вообще смущают в одном контексте слова "случайные" и "монотонно возрастающие".
наверное что то типа

C++
1
num[a] = num[a-1] + rand()%2;
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5437 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
02.09.2013, 12:31     Как генерить монотонно возрастающие числа? #9
Цитата Сообщение от newbie666 Посмотреть сообщение
программа будет запускаться тысячи раз, то уникальность случайных номеров, даже в формате long long ставится под вопрос
Положите в коробку два шарика - черный и белый. Достаньте из нее один. Запомните цвет извлеченного. Положите обратно. Посмотрите на звезды, почитайте бальмонта, полистайте календарь майя. Теперь достаньте еще раз шар из коробки. Какова вероятность, что он будет такого же цвета как в прошлый раз?

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

Добавлено через 51 секунду
Цитата Сообщение от Raali Посмотреть сообщение
одной и той же даты, учитывая год, быть 2 раза не может
12.12.12
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.09.2013, 12:32     Как генерить монотонно возрастающие числа? #10
Цитата Сообщение от Raali Посмотреть сообщение
C++
1
num[a] = num[a-1] + rand()%2;
не стыкуется
Цитата Сообщение от newbie666 Посмотреть сообщение
чтоб они были всё время разные
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
02.09.2013, 12:36     Как генерить монотонно возрастающие числа? #11
Цитата Сообщение от Thinker Посмотреть сообщение
Сообщение от newbie666
чтоб они были всё время разные
если перед запуском делать srand от даты, то будут разные

Цитата Сообщение от SatanaXIII Посмотреть сообщение
12.12.12
и когда второй раз при нашей жизни такое будет
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.09.2013, 12:39     Как генерить монотонно возрастающие числа? #12
Цитата Сообщение от Raali Посмотреть сообщение
если перед запуском делать srand от даты, то будут разные
речь не о srand, а об алгоритме

Цитата Сообщение от Raali Посмотреть сообщение
num[a] = num[a-1] + rand()%2;
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5437 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
02.09.2013, 12:43     Как генерить монотонно возрастающие числа? #13
Цитата Сообщение от Raali Посмотреть сообщение
и когда второй раз при нашей жизни такое будет
В сто двенадцатом году. "Проблема две тысячи" - не слыхали?
Я к тому, что от формата зависит.

Цитата Сообщение от Raali Посмотреть сообщение
если перед запуском делать srand от даты, то будут разные
ТС говорит, что возможен вариант запуска второй копии программы, при еще не сменившемся значения времени. Надо какую-нибудь развертку монитора тогда уж приплетать. )
newbie666
Заблокирован
02.09.2013, 12:55  [ТС]     Как генерить монотонно возрастающие числа? #14
да..... думаю случайного генератора в размерности Long long будет достаточно ))) Вот где бы взять такой генератор, что б генерил огромные числа в формате unsigned Long long и чтоб можно было бы задавать кол-во циферок, тоесть чтоб все номера были бы одной длинны как бы, например, максимальной для беззнакового long long ....
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.09.2013, 13:03     Как генерить монотонно возрастающие числа? #15
Короче, пошла какая-то муть.
Автор, сформулируйте задачу полностью.

Не по теме:

id пользователя генерит чтоли...

newbie666
Заблокирован
02.09.2013, 13:06  [ТС]     Как генерить монотонно возрастающие числа? #16
id пользователя генерит чтоли...
Что то вроде того ))) Вот и задача сформулирована )
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.09.2013, 13:27     Как генерить монотонно возрастающие числа? #17
newbie666, под виндой доступна функция UuidCreate http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Под никсами uuid_generate http://linux.die.net/man/3/uuid_generate
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 1
02.09.2013, 13:44     Как генерить монотонно возрастающие числа? #18
Цитата Сообщение от SatanaXIII Посмотреть сообщение
12.12.12
штамп времени включает в себя: год месяц число час минута секунда - и это минимум
newbie666
Заблокирован
02.09.2013, 13:48  [ТС]     Как генерить монотонно возрастающие числа? #19
Цитата Сообщение от vndtta Посмотреть сообщение
год месяц число час минута секунда
там ещё и миллисекунды есть, но этого не достаточно )

Добавлено через 50 секунд
вряд ли конечно, т.к. винда - это не ОСРВ, но всё же, может кто слышал как получить время с точностью до наносекунд в windows ? ))))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2013, 13:59     Как генерить монотонно возрастающие числа?
Еще ссылки по теме:

Найти максимально длинные возрастающие последовательности чисел массива C++
Распечатать возрастающие последовательности заданных чисел в обратном порядке C++
Проверить, монотонно ли растут числа в массиве C++

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

Или воспользуйтесь поиском по форуму:
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
02.09.2013, 13:59     Как генерить монотонно возрастающие числа? #20
Цитата Сообщение от newbie666 Посмотреть сообщение
вряд ли конечно, т.к. винда - это не ОСРВ, но всё же, может кто слышал как получить время с точностью до наносекунд в windows ? ))))
это для того чтобы была разница между временем запуска приложений?) наверное придется создавать какой то общий сервер все таки, который распределяет данные...
Yandex
Объявления
02.09.2013, 13:59     Как генерить монотонно возрастающие числа?
Ответ Создать тему
Опции темы

Текущее время: 17:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru