Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Алгоритм ]Получить средние разряды числа.


Автор: Костя1992 15.1.2012, 12:42
Как получить 
из x = 0,07|4927|81,
Число 4927
Нужен алгоритм какойто?Или нужно переводить методом преобразования в строку?Помогите плз

Автор: disputant 15.1.2012, 13:08
Некорректно как-то условие задано. Для конкретного вашего числа? Попробуйте сформулировать правильнее - для чисел вида (из диапазона, ...) надо получить ... (цифры с 5 по 8-ю, средние четыре, ...).

А то у вас не условие, а недоразумение...

Автор: Костя1992 15.1.2012, 13:10
Мне кажеться легче обьяснить на примере,поэтому и написал такое условие.

Автор: disputant 15.1.2012, 13:40
Цитата(Костя1992 @ 15.1.2012,  13:10)
Мне кажеться легче обьяснить на примере,поэтому и написал такое условие.

Ну, тогда ждите того, кто поймет ваш пример...

Автор: Костя1992 15.1.2012, 13:44
Хорошо ,обьясняю:
 Для реализации генерации чисел методом средних квадратов мне нужно получить n-средних разрядов из числа с плавающей точкой,как это можно реализовать?

Автор: feodorv 15.1.2012, 15:19
Цитата(disputant @  15.1.2012,  13:40 Найти цитируемый пост)
Ну, тогда ждите того, кто поймет ваш пример... 

Это способ генерации псевдослучайных чисел методом фон Неймана...

Автор: feodorv 15.1.2012, 16:23
Я всё же не понимаю, зачем при этом пользоваться числами с плавающей точкой... Ведь если реализовать всё через __int64 или long long, то максимальная разрядность для n будет 9 (что с лихвой перекроет четвёрку), а в long double-числах я не уверен (операция деления на 10 для чисел с плавающей точкой весьма нетривиальна, алгоритм можно сбить).

Автор: Костя1992 15.1.2012, 20:12
Шустрый,просто такова постановка задачи, я вот думаю можна ли как то добиться этого числа через div,mod и умножением на 10^n?

Автор: Mirkes 16.1.2012, 17:45
Если ставить вопрос несколько иначе, например получить 4 разряда начиная с третьего после запятой, то нет никаких проблем
Берем очередное случайное число из диапазона [0,1], умножаем его на 7, отбрасываем дробную часть, берем остаток от деления на 10000 - вуаля!

Автор: Костя1992 16.1.2012, 19:02
Да,последний ответ актуальный,грубо говоря все делаеться спомощью у множения на 10^n и операций div,mod.Тема закрыта!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)