![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Bikutoru |
|
|||
|
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Здраствуйте. У меня возникла необходимость выделения цифр в отдельных разрядах при работе с BigInteger. Метода, позволяющего делать этого я не нашел и выкрутился следующим образом:
и всё-таки вопрос остался - нет ли какого-нибудь способа "вытащить" значение в конкретном десятичном разряде числа, представленного BigInteger'ом? -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
| powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Т.к числа целые, то данную задачу еще можно решить математически, с испльзованием деления и взятия отстатка от деления. вот так можно разложить число на разряды.
Это будет работать быстрее чем твой код.... А если еще и доработать........ Это сообщение отредактировал(а) MoonCat - 9.4.2006, 14:39 |
||||
|
|||||
| Bikutoru |
|
|||
|
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Можно, но вопрос будет ли это проще, чем мой вариант. Моя задача заключается в создании генератора псевдослучайных чисел. Принцип его работы заключается в том, что берутся несколько больших целых чисел, над ними выполняются какие-то арифметические операции, а из результата этих операций выбираются значения в каких-то заранее определенных разрядов, из которых и формируется псевдослучайное число. Ну а после этого, исходные числа заменяются по какому-то закону. Так вот, в рамках данной задачи мне может потребоваться лишь часть разрядов большого числа (например 10 из 100), поэтому стоит ли использовать деление на 10 и взятие остатка - вопрос интересный... -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А чем не устраивают стандартные генераторы случайных чисел? И зачем именно десятичные разряды использовать?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Bikutoru |
|
|||
|
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Тем, что это учебная задача в рамках курса со страшным названием. И задача стоит такая: "разработать генератор псевдослучайных чисел, дающий равномерное распределение на участке [0,1) в рамках описанной ранее идеи (читай, подобрать начальные числа, операции над ними, правила выбора разрядов для псевдослучайной величины и правила замены исходных чисел) и написать программу, которая построит гистограмму распределения. -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
| powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Сорри за оффтоп.. А как название курса звучит? Просто у меня типа такого же задания по Курсу Информационной Безопасноти.
Добавлено @ 12:48
А ты думаешь что при переводе числа в строку не используется деление? Имхо очень даже используется. А это строкой ты перевод делаешь всего числа, т.е. каждый разряд выделяется. Не думаю, что сделав лишних операций ты быстрее придешь финишу... В прочем тебе виднее... |
||||
|
|||||
| Bikutoru |
|
||||
|
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
"Компьютерные технологии в науке и образовании"
ИМХО, при переводе BigInteger'a в строку? Не уверен, но и говорить, чтоэтого не происходит не буду. На самом деле, я этот вопрос задал из-за возникшего ощущения "А не дурак ли я?", но судя по тому, что простейшего ответа "в одну строку" я не получил, получается что это была ложная тревога... А производительность моего кода меня вполне устраивает, а заниматься оптимизацией ради оптимизации никакого желания нет. Но все равно спасибо за ответ. Это сообщение отредактировал(а) Bikutoru - 10.4.2006, 13:48 -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ты забываешь об одной вещи, это не int, а BigInteger. И операция деления для него не менее трудоемка, чем перевод в строку. Так что ИМХО способ вполне нормальный. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |