Ведутся технические работы. Это может временно повлиять на скорость работы сайта. Приносим извинения за неудобства и благодарим за ваше понимание!

Случайные числа: как обмануть игровой автомат, рулетка с роботом и кубики на Raspberry. ТехноБайки

Сегодня поговорим о числах — случайных и нет. Проведём кучу экспериментов, соберём парочку игровых автоматов и попытаюсь у них выиграть.

Если вы пытались написать свой тетрис, сделать электронную свечку или собрать светомузыку — точно использовали случайные числа. Всё просто?

Нет. Компьютер штука полезная, умная, но предельно логичная. Выполнить сложную программу — никаких проблем, а придумать случайное число компьютер не может.

В самом простом случае — функция генерации случайных чисел выдаёт элементы прошитого в память массива. Дальше они могут обрабатываться дополнительно, например суммироваться со временем, прошедшим от включения устройства, перемножаются на биты серийного номер и так далее.

Получается, программы генерируют псевдослучайные числа. Гордитесь своим превосходством над компьютером? Зря!

Скетчи экспериментов вы найдёте на нашей wiki: http://wiki.amperka.ru/%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%BE%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0:rnd

Список эпизодов ТехноБайки:

01:15 — Почему робот выигрывает у человека в “Орёл и Решку”.

04:57 — Как взломать игровой автомат?

07:14 — Как собрать аппаратный генератор случайных чисел.

09:10 — играем в рулетку с Arduino.

12:00 — рандомизатор на Raspberry и OpenCV.

14:10 — гарантированный способ поднять деньги в казино.
Система Энштейна и как она работает.


В ролике использовались:

• Arduino Uno — https://amperka.ru/product/arduino-uno?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Slot Shield — https://amperka.ru/product/arduino-troyka-slot-shield?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Индикаторные светодиоды — https://amperka.ru/product/troyka-5mm-led-module?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Тактовая кнопка — https://amperka.ru/product/big-tactile-button?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Четырёхразрядный индикатор — https://amperka.ru/product/troyka-quad-display?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Пьезопищалка — https://amperka.ru/product/troyka-buzzer?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Proto Shield — https://amperka.ru/product/arduino-proto-shield-pcb?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Серва постоянного вращения FS5113R — https://amperka.ru/product/servo-fs5113r?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Соленоид — https://amperka.ru/product/solenoid-tau-0530t-12v?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Raspberry Pi 3 — https://amperka.ru/product/raspberry-pi-3-model-b-plus?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube
• Raspberry Camera v 2.1 — https://amperka.ru/product/raspberry-pi-camera-board-v2?utm_source=proj&utm_campaign=pvid-2019-11-15-casino&utm_medium=youtube

#технобайки #случайныечисла #arduino #raspberry #opencv

( ! ) Warning: Invalid argument supplied for foreach() in /home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php on line 44
Call Stack
#TimeMemoryFunctionLocation
10.0000350408{main}( ).../index.php:0
20.0000350688require( '/home/domains/malitikov.ru/public_html/wp-blog-header.php ).../index.php:17
30.17138478928require_once( '/home/domains/malitikov.ru/public_html/wp-includes/template-loader.php ).../wp-blog-header.php:19
40.17298503616include( '/home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php ).../template-loader.php:106

Мы рекомендуем


( ! ) Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 20480 bytes) in /home/domains/malitikov.ru/public_html/wp-includes/class-wpdb.php on line 2322
Call Stack
#TimeMemoryFunctionLocation
10.0000350408{main}( ).../index.php:0
20.0000350688require( '/home/domains/malitikov.ru/public_html/wp-blog-header.php ).../index.php:17
30.17138478928require_once( '/home/domains/malitikov.ru/public_html/wp-includes/template-loader.php ).../wp-blog-header.php:19
40.17298503616include( '/home/domains/malitikov.ru/public_html/wp-content/themes/malitikov/single.php ).../template-loader.php:106
50.458922751128WP_Query->__construct( $query = ['post_type' => 'post', 'post_status' => 'publish', 'fields' => 'ids', 'posts_per_page' => -1, 'no_found_rows' => TRUE, 'orderby' => 'none'] ).../single.php:65
60.458922751128WP_Query->query( $query = ['post_type' => 'post', 'post_status' => 'publish', 'fields' => 'ids', 'posts_per_page' => -1, 'no_found_rows' => TRUE, 'orderby' => 'none'] ).../class-wp-query.php:4081
70.458922751128WP_Query->get_posts( ).../class-wp-query.php:3949
80.459422762992wpdb->get_col( $query = 'SELECT wp_posts.ID\n\t\t\t\t\t FROM wp_posts \n\t\t\t\t\t WHERE 1=1 AND wp_posts.post_type = \'post\' AND ((wp_posts.post_status = \'publish\'))\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t ', $x = ??? ).../class-wp-query.php:3300
90.459422762992wpdb->query( $query = 'SELECT wp_posts.ID\n\t\t\t\t\t FROM wp_posts \n\t\t\t\t\t WHERE 1=1 AND wp_posts.post_type = \'post\' AND ((wp_posts.post_status = \'publish\'))\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t ' ).../class-wpdb.php:3107
104.5626757308120mysqli_fetch_object( $result = class mysqli_result { public $current_field = 0; public $field_count = 1; public $lengths = [0 => 7]; public $num_rows = 1516847; public $type = 0 } ).../class-wpdb.php:2322