Якщо для генератора я задам такі числа m=377, n=133, k=200 - x= (x*377+133)%200;
int myrand(int x)
{
x = (x * 377 + 133) % 200;} ///x= (x*377+133)%200;
x | rand() |
---|---|
7 | 13 |
13 | 25 |
25 | 47 |
47 | 89 |
89 | 164 |
У мене вийшла така от таблиця, легко бачити що наступне число вдівічі більше за попереднє, до того ж вони все зростають і зростають. Тобто наступне число більше за попереднє. Напевне слід взяти m
- більшим, k
- меншим.
Якщо згенерувати моїм генератором багато таких чисел, і підрахувати в масиві кількість появи кожного, то поява кожного числа будле випадковою
Колода карт
Завдання в тому, щоб придумати якомога більше способів розв'язку цієї задачі. Від самого тупого(самого довготривалого, самого не ефективного, не раціонального(метод грубої сили) до найоптимальнішого з точки зору часу/кількості операції. А ще я якось думав про імітацію фізичного тасування колоди))))) - цей спосіб я ще сам не реалізовував.
За це завдання 5 балів - з розрахунку один спосіб - 1 бал.
Якщо зможете оцініть часові витрати для генерації випадкового масиву для N чисел. Але при онлайн компіляторах ваші програми невірно оцінюватимуть час. Тому краще замість цього порахувати кількість операцій для генерації масиву на 20, 1000, 10000 "карт"/чисел.
Чому тут вказано 20? - бо той метод що я називаю тупим методом так, не раціонально та повільно генерує масив - ви просто не дочекаєтеся результату. Тому для цього примітивного методу можна взагалі провести дослідження на зразок
N | operatoins |
---|---|
1 | xx |
2 | xx |
3 | xx |
.. | .. |
19 | xx |
Я розумію що рішення завдання "Колода карт" на Пайтоні впишеться в два рядки(якщо не в один рядок коду)... проте вам слід все це проробити самостійно.
Homework
- (1 бал) Яку роль відіграють випадкові числа в комп'ютерному світі? Як їх з "псевдовипадкоих" перетворити у більш випадкові.
- (2 бали) Напишіть генератор випадкових чисел. Дослідіть його.
- (5 балів) "Колода карт" - Знайдіть декілька способів заповнити масив 1...N - 1 Один спосіб - один бал.
- (2 бали) Побудуйте таблицю залежності кількості операцій при генеруванні колоди з N карт для ваших способів.
Наприклад
Ncards | Operations |
---|---|
5 | 4000 |
6 | 5000 |
7 | 6000 |
.. | .. |
Правила проведення
Публікувати можна на будь-якій мові, в будь якій спільноті чи просто у власному блозі, посилання на вашу роботу додайте сюди коментарем
Щоб я швидко знайшов, перевірив та оцінив ваші роботи залиште посилання в коментарі під цим текстом а в роботі поставите тег #slc21w6sergeyk
До всіх завдань код наводити скріншотом, не текстом. Демонструвати теж скріншотом результат роботи програми.
Будьте обережні стосовно ідеальних та надефективних рішень, звичайній людині, початківцю їх не легко найти.
Не надавати рішення задач з допомогою матеріалів, які не вчили. Наприклад масивів, котрі ми ще не вчили. Це обмеження не стосується тих студентів які вже практично знайомі з програмуванням, та надають розширені відповіді на завдання, що більш схоже на лекцію.
Плагіат і використання ШІ заборонено.
Учасники мають бути перевіреними та активними користувачами платформи.
Використані зображення мають належати автору або бути вільними від авторських прав. (Не забудьте вказати джерело.)
Учасники не повинні використовувати будь-які сервіси ботів для голосування, не брати участь у купівлі голосів.
Порекомендуйте прийняти участь своїм друзям.
Роботи слід опублікувати з Monday 2 Dec 24 to Sunday 08 Dec 24
Ваші роботи будуть мною прокоментовані, оцінені та відібрані чотири кращі роботи.
I had a busy week. Didn't even get a chance to read the last lesson. I will do it though some other time for practice.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @sergeyk, got a question for the third task. You want us to find 5 ways to fill an array from 1 to N and always have the numbers sorted 1,2,3,...,N and only the filling way to be different?
or 5 ways to fill with numbers from 1 to N but in any order as long as we keep each value unique?
I guess it's the second one but wanted to make sure.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
yes, this is your second option
1..6 => {4,1,5,2,6,3} or {4,1,5,2,0,3}
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
many construction methods should be demonstrated - from the worst to the best
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Here is my entry:
https://steemit.com/slc21w6sergeyk/@ahsansharif/slc21-week6-programming-games-and-puzzles-part-2
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
My entry:
https://steemit.com/slc21w6sergeyk/@kouba01/slc21-week6-programming-games-and-puzzles-part-2
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hello
This is my entry:
https://steemit.com/hive-185836/@ady-was-here/slc21-week6-programming-games-and-puzzles-part-2
Thank you :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit