![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 01.11.2016
Сообщений: 110
|
![]()
Написать генератор псевдослучайных чисел по алгоритму f[n] = (f[n - 1] + f[n - 2] + f[n - 3]) % 239;f(0)=f(1)=f(2)=30.Посчитать частоту каждого числа при выборке 100000
int gen(int n) { static unsigned int f[100000] = { 30, 30, 30 }; if (n >= 0 && n <= 2) return 30; f[n] = (f[n - 1] + f[n - 2] + f[n - 3]) % 239; return f[n]; } int main() { int a[239] = { 0 }; for (int i = 0; i < 100000; i++) a[gen(i)]++; for (int i = 0; i < 239; i++) printf("Chastota chisla %d ravna %d\n", i, a[i]); return 0; } |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
![]()
Я пишу не очень красиво: ошибки, частые разрывы логики-нити (я завидую тем людям, которые могут ясно, компактно, лаконично объяснить свою мысль), поэтому обычно я форумчанам советую перечитывать мои посты по 3-ри раза, но к тебе "особые условия" - читать 5-раз (не меньше).
1) Остаток от деления, например на "3": Код:
10.jpg Это подсчитывается тут: Код:
___________________________________ ___________________________ Ну это просто, вывод результата на экран: Код:
Теперь о функции: Код:
Код:
Код:
Код:
Код:
___________________________________ ____________________ Первые три значения функции "f[n]" рассмотрели, ну а дальнейшие 99997 раза вызова расчёт идёт уже по формуле: Код:
Ну и последний элемент здесь - ключевое слово "static". Что это значит? Память под массив выделяется один раз и держится в оперативной памяти до конца работы всей программы. Напомню, обычно (без этого слова) этот массив бы создавался бы всякий раз при вызове функции из "main" (т.е. все 100000 раз). Ну возврат первых 3-х раз не изменилось бы, а вот остальные возвраты уууууууу. Возьми поэкспериментируй: удали слово "static" и запусти. Что вывело? Внимательно анализируй результат (там не только будут нули!). Вместо слова "static" можно было бы сделать массив "unsigned int f[100000]" глобальным: Код:
Последний раз редактировалось ura_111; 14.02.2017 в 05:49. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объяснить код программы | Morreaw | Помощь студентам | 0 | 09.06.2015 09:11 |
Прокомментировать каждую строку программы | cudri | Помощь студентам | 2 | 29.05.2013 14:02 |
Прокомментировать код программы | lolbox | C# (си шарп) | 0 | 24.03.2013 10:11 |
C# - прокомментировать код программы шифрования магическим квадратом | Darh | Помощь студентам | 0 | 07.11.2012 10:48 |
Объяснить с++ программы | МихаилД | Фриланс | 3 | 26.06.2012 03:06 |