![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Splendid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
Нашла несколько тем по ГСЧ, но мне нужен довольно большой диапазон, числа должны генерироваться от 1 и до некоторого большого числа, которое м.б. до ((2 в степени 32768)-1).
Подскажите, пожалуйста, как в этом случае организовать ГСЧ?? Большие числа представляются как:
|
|||
|
||||
| Alek86 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
1 поменять стуртуру на такую
2 добавить функцию
если структуру поменять нельзя, то замени в тексте MaxCount и Figure на соотв. реализовать SetLenByData попробуй сама. Добавлено через 39 секунд а. и еще одно язык у тебя с++ или с? |
||||
|
|||||
| Splendid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
язык с, структуру менять нельзя....пока ничего не поняла, можно поподробнее?
|
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
по циклу заполняешь массив num рендомными числами потом рендомно ставить знак потом считаешь длину числа |
|||
|
||||
| Splendid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
сейчас переварю...
Это сообщение отредактировал(а) Splendid - 1.7.2008, 14:10 |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
это значит (unsigned short) - приведение типа |
|||
|
||||
| Splendid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
а что такое - o_number, num? Я так понимаю, что Figure надо заменить на num[2048], а MaxCount на sizeof(num)? SetLenByData я реализую сама, помогите цикл переписать, пожалуйста... Добавлено через 4 минуты и 50 секунд и еще - выходом здесь будет массив сл.чисел? |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
Figure - это тип элемента массива
Добавлено через 1 минуту и 6 секунд а, ну да, если си, то static_cast нельзя нужно использовать форму, указанную Lazin Добавлено через 6 минут и 13 секунд опять же, это си потому функция должна принимать указатель, а не ссылку
нет ты отдаешь указатель на экземпляр big_number, а функция его заполняет |
|||
|
||||
| Splendid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
блин, я ничего понять не могу...зачем массив? мне нужно одно случайное число >1 и меньше заданного большого числа...
Это сообщение отредактировал(а) Splendid - 1.7.2008, 14:35 |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
||||
|
||||
| Splendid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
правильно ли я поняла:
o_number - заданное большое число, полученное случайное число не д.б больше его. вместо static_cast пишем просто (unsigned short) o_number.sign = rand() % 2; - т.к. у меня число больше единицы д.б. то это не надо? Добавлено через 45 секунд какие есть операции над большими числами? - сложение, умножение, вычитание, сравнение, деление |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Splendid, генератор псевдослучайных чисел реализуется по формуле: result[i] = (result[i-1] * primeNum + oddNum) / divisor,
где result - это массив генерируемых случайных чисел, primeNum - некое постоянное простое число (больше, чем максимально получаемый результат), oddNum - некое постоянное нечетное число, divisor - некий постоянный делитель (обычно, он просто отделяет старшую половину разрядов числа). Это сообщение отредактировал(а) bsa - 1.7.2008, 15:05 |
|||
|
||||
| Splendid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
bsa, а primeNum, oddNum, divisor в принципе можно произвольными взять?
|
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
главное чтобы primeNum было простым (если забыла, то читай определение) и большим, oddNum - нечетным, а divisor подходящим. Например немного переработанный вариант из glibc:
|
||||
|
|||||
| Splendid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 1.8.2007 Где: Беларусь, Минск Репутация: нет Всего: нет |
bsa, спасибо!
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |