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

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

02.09.2013, 11:56. Показов 1937. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет! Суть проблемы такова. Надо генерить длинные (long long) числа, чтоб они были всё время разные и плавно возрастающие. Генериться они должны всегда правильно, вне зависимости от того, сколько раз подряд была запущенна программа, сколько раз компьютер был перезагружен и тд... Понятно, что в принципе тут надо завязываться на дату, но тут так же возникает проблема - если этот генератор запускать в цикле, то текущее время просто не успевает обновится и номера остаются одинаковыми....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2013, 11:56
Ответы с готовыми решениями:

Visual Studio: Вывести номера столбцов матрицы, элементы которых образуют монотонно убывающую или монотонно возрастающую последовательность
Здравствуйте, прошу помощи. Вопрос жизни и смерти. В программировании вообще что-то тяжко. С горем...

Как генерить веб страничку
Здравствуйте. Есть проект на java, появилась необходимость допилить в проект веб сервер. С веб...

Напечатать все возрастающие последовательности длины m элементами которых являются натуральные числа от 1 до n
Напишите программу, которая печатает все возрастающие последовательности длины m элементами которых...

Как можно из ASP генерить файл word-а?
Подскажите как можно из ASP генерить файл word-а

22
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
02.09.2013, 12:00 2
легче тогда завязать не на время, а просто при выходе программы сохранять последнее значение в файл например
1
Заблокирован
02.09.2013, 12:09  [ТС] 3
Цитата Сообщение от Raali Посмотреть сообщение
просто при выходе программы сохранять последнее значение в файл например
ну так то оно так, но в моём случае возможен крах системы и соответственно все файла тоже крякнут... А хотелось бы не завязываться на локал хост, а просто получать дату и время с сервера например или ещё как - то ...
0
93 / 69 / 22
Регистрация: 17.10.2011
Сообщений: 235
02.09.2013, 12:13 4
Цитата Сообщение от newbie666 Посмотреть сообщение
... если этот генератор запускать в цикле, то текущее время просто не успевает обновится и номера остаются одинаковыми....
обычно генератор случайных чисел 1 раз инициализируется(текущим временем), а потом генерериуются ичсла из псвевдослучайной последовательности

http://www.cplusplus.com/refer... /?kw=srand
0
Заблокирован
02.09.2013, 12:17  [ТС] 5
Цитата Сообщение от vndtta Посмотреть сообщение
обычно генератор случайных чисел 1 раз инициализируется(текущим временем), а потом генерериуются числа из псвевдослучайной последовательности
Всё верно, но этот номер может повторится при повторном запуске программы.... А если учесть, что программа будет запускаться тысячи раз, то уникальность случайных номеров, даже в формате long long ставится под вопрос....
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.09.2013, 12:20 6
Меня вообще смущают в одном контексте слова "случайные" и "монотонно возрастающие".
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.09.2013, 12:21 7
Цитата Сообщение от 0x10 Посмотреть сообщение
Меня вообще смущают в одном контексте слова "случайные" и "монотонно возрастающие".
более того,
Цитата Сообщение от newbie666 Посмотреть сообщение
плавно возрастающие.
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
02.09.2013, 12:25 8
Цитата Сообщение от vndtta Посмотреть сообщение
Всё верно, но этот номер может повторится при повторном запуске программы
одной и той же даты, учитывая год, быть 2 раза не может) только в другом измерении наверное

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

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

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

Добавлено через 51 секунду
Цитата Сообщение от Raali Посмотреть сообщение
одной и той же даты, учитывая год, быть 2 раза не может
12.12.12
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.09.2013, 12:32 10
Цитата Сообщение от Raali Посмотреть сообщение
C++
1
num[a] = num[a-1] + rand()%2;
не стыкуется
Цитата Сообщение от newbie666 Посмотреть сообщение
чтоб они были всё время разные
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
02.09.2013, 12:36 11
Цитата Сообщение от Thinker Посмотреть сообщение
Сообщение от newbie666
чтоб они были всё время разные
если перед запуском делать srand от даты, то будут разные

Цитата Сообщение от SatanaXIII Посмотреть сообщение
12.12.12
и когда второй раз при нашей жизни такое будет
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.09.2013, 12:39 12
Цитата Сообщение от Raali Посмотреть сообщение
если перед запуском делать srand от даты, то будут разные
речь не о srand, а об алгоритме

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

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

Не по теме:

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

0
Заблокирован
02.09.2013, 13:06  [ТС] 16
id пользователя генерит чтоли...
Что то вроде того ))) Вот и задача сформулирована )
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.09.2013, 13:27 17
newbie666, под виндой доступна функция UuidCreate http://msdn.microsoft.com/en-u... 85%29.aspx
Под никсами uuid_generate http://linux.die.net/man/3/uuid_generate
2
93 / 69 / 22
Регистрация: 17.10.2011
Сообщений: 235
02.09.2013, 13:44 18
Цитата Сообщение от SatanaXIII Посмотреть сообщение
12.12.12
штамп времени включает в себя: год месяц число час минута секунда - и это минимум
0
Заблокирован
02.09.2013, 13:48  [ТС] 19
Цитата Сообщение от vndtta Посмотреть сообщение
год месяц число час минута секунда
там ещё и миллисекунды есть, но этого не достаточно )

Добавлено через 50 секунд
вряд ли конечно, т.к. винда - это не ОСРВ, но всё же, может кто слышал как получить время с точностью до наносекунд в windows ? ))))
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
02.09.2013, 13:59 20
Цитата Сообщение от newbie666 Посмотреть сообщение
вряд ли конечно, т.к. винда - это не ОСРВ, но всё же, может кто слышал как получить время с точностью до наносекунд в windows ? ))))
это для того чтобы была разница между временем запуска приложений?) наверное придется создавать какой то общий сервер все таки, который распределяет данные...
0
02.09.2013, 13:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.09.2013, 13:59
Помогаю со студенческими работами здесь

Как заставить bash генерить в 16тиричной системе?
приветствую подскажите, пожалуйста, как в данном варианте скрипта for ip in {10..40}; do...

Проверить, монотонно ли растут числа в массиве
{ int a={1,8,56,98,25,-9,45,64,17,5,79}; for (int k = 0; k < 12; k++) { bool swaped=false; for...

Напишите программу, которая печатает все возрастающие последовательности длины m, элементами которых являются натуральные числа от 1 до n (m <= n)
Напишите программу, которая печатает все возрастающие последовательности длины m, элементами...

Напишите программу, которая печатает все возрастающие последовательности длины m, элементами которых являются натуральные числа от 1 до n (m <= n). Ук
Во всех заданиях предполагается создание отдельного проекта, полное описание всех необходимых...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru