|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.08.2016, 02:41 | #1 |
Регистрация: 22.08.2016
Сообщений: 5
|
Random и BigInteger (Pascal ABC)
Random не работает с BigInteger из-за ошибки "Нельзя преобразовать тип system.numerics.biginteger к integer".
Как это можно обойти(Библиотеки дописывать не охото) и можно ли вообще? Если нет то как написать свою функцию рандом(можно с ручным вводом сида)? |
22.08.2016, 13:59 | #2 |
Форумчанин
Регистрация: 25.01.2015
Сообщений: 472
|
А опишите задачу подробнее, может статься, что тут другое решение.
Ну и минимальный тестовый пример приведите. |
22.08.2016, 14:46 | #3 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
А integer к system.numerics.biginteger можно?
Вообще не знаю про АБС, но уж если так хочется большие произвольные числа, то можно рандомить по разрядам (или по нескольким сразу), что-то типа Код:
|
23.08.2016, 00:01 | #4 | |
Регистрация: 22.08.2016
Сообщений: 5
|
Biginteger и integer плохо совместимы, из-за этого random не может производить никаких манипуляций с biginteger
Код:
Цитата:
Рандом по разрядам плохая идея. |
|
23.08.2016, 08:21 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
на стековефлоу искали? попробуйте такой код адаптировать под свой паскаль: Код:
|
|
29.08.2016, 03:06 | #6 |
Регистрация: 22.08.2016
Сообщений: 5
|
Тем что надо будет постоянно сравнивать рандомное число с максимальным его значением.
Код:
P.S. Паскаль знаю плохо. Можете ли вы еще посоветовать какую-то литературу по языку? |
29.08.2016, 10:09 | #7 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
очевидно, что в каждом разряде не может быть больше 9. максимальное значение определяется числом разрядов: 999..(9)..9 Вы вообще какую задачу решаете? для чего Вам большое случайное число? Цитата:
что конкретно в нём непонятно? Имхо, он вообще в Паскаль АБЦ.НЕТ не должен компилится! Его нужно допиливать до кондиции. Цитата:
Данный Паскаль - это скорее обёртка над фреймворком. А ещё лучше, если Вам нужен .NET - то переходите на его родной язык - C# и литературы больше, и IDE есть, и реализация родная. |
|||
30.08.2016, 02:25 | #8 | ||
Регистрация: 22.08.2016
Сообщений: 5
|
Цитата:
Если рандомить по разрядам то может получиться число 9324326552779. 9324326552779>5476432783247 Цитата:
|
||
30.08.2016, 09:45 | #9 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
вторую цифру числа получайте из диапазона 0-4 ( Random(4) ) третью цифру числа получайте из диапазона 0-7 ( Random(7) ) четвёртую цифру числа получайте из диапазона 0-6 ( Random(6) ) и т.д. для этих целей удобно воспользоваться константным массивом. а вообще, Вы пытаетесь использовать BigInteger там, где он не особо нужен. есть такой тип данных - int64 возьмите его. у него максимально допустимое значение знаковое 9223372036854775807 беззнаковое 18446744073709551615 (см. MSDN - Data Type Ranges или Int64.MaxValue в .NET) Вам хватит такого диапазона? Цитата:
Не стоило начинать с него. Тогда уже возьмите "чистый" Паскаль (FreePascal, for example) или, начинайте прямо с C# вон, у microsoft были уроки "c# для школьников" всё это, конечно, исключительно моё личное мнение (IMHO). |
||
30.08.2016, 14:37 | #10 | ||
Регистрация: 22.08.2016
Сообщений: 5
|
Цитата:
Цитата:
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
BigInteger в Math.Biginteger; | Artorios | Общие вопросы по Java, Java SE, Kotlin | 1 | 19.11.2013 02:21 |
Random (Pascal) | spinogryz_ua | Помощь студентам | 3 | 23.01.2013 00:13 |
Random (pascal) | spinogryz_ua | Помощь студентам | 6 | 09.01.2013 13:50 |
в Pascal ABC.Net ошибка:"невозможно явно преобразовать тип integer к System.random" | ameks94 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 23.12.2012 02:04 |
pascal random | S0ap | Помощь студентам | 2 | 10.07.2011 17:49 |