09 FreeBASIC - случайные числа, RND

F
freebs
![](https://serey.io/imageupload_data/96e159cccf53e83e9f7fedc6cf44ac3931071edf) Рассмотрим несколько примеров генераторов случайных чисел. Составим программу которая ставит точки на экране со случайными координатами. Разрешение экрана выберем новой командой FreeBASICa **SreenRes** у которой в данном случае будет три параметра: разрешение по горизонтfли(800), вертикали(600) и глубина цвета(8 бит) Как видно из результата работы этой программы генератор случайных чисел FreeBASIC не плохой - заполнение экрана равномерное, без явных сгустков и разрешений. ![](https://i.imgur.com/NJl25hX.png) А теперь посмотрим на генератором случайных чисел моего первого домашнего компьютера Sinclair ZX В своём [посте](https://golos.io/ru--kompxyuter/@sergiy/bk-orel) я упоминал онлайн [эмулятор](http://torinak.com/qaop) своего первого домашнего компьютера. Попробуйте в нём исполнить такой код. ![](https://i.imgur.com/RCfnq7Q.png) Чтобы набрать несколько строк прийдется изрядно промучиться, так как все ключевые слова закреплены под определёнными клавишами, а не набираются посимвольно))) Размер экрана - 256х192 точки, но так как две нижние строки отведены под "системные нужды" это минус 16 строчек и размер экрана выходит 256х176 ![](https://i.imgur.com/tgSY8Ho.jpg) Это результат для 3000 точек ![](https://i.imgur.com/zuGSQFv.jpg) для 9000 ![](https://i.imgur.com/e4MpZhH.jpg) и для 15000 ![](https://i.imgur.com/PcoUCGD.jpg) огрехи генератора случайных чисел Sinclair ZX очень заметны, явно видно что здесь что то не то)) Ещё боле наглядно выглядит картина если случайные точки расположить в трехмерном пространстве. Это иллюстрация работы генератора RANDU, говорят наименее продуманного генератора случайных чисел. В начале видео кажется что точки случайно разбросаны в пространстве, но под определённым углом видно что "случайные числа не случайны". https://youtu.be/7wVk_XsxyNk ![](https://i.imgur.com/KA8yGIV.png) Чем это чревато? Например, если моделируется некоторые явления, то там можно обнаружить закономерности которых быть не должно. Но что говорить о RANDU 60х годов, тогда компьютеры были большие, а их возможности маленькие. Но даже в 1995 году браузер Netscape сделал не совсем качественный генератор случайных чисел и его легко взломали. [хабр](https://habr.com/post/128666/) В 2013 году в Android кошельке "забыли" давать команду типа `randomize timer` что позволило иногда генерировать одинаковые СЧ. И можно было разгадать секретный ключ от кошелька. [ссылка](https://www.computerra.ru/183451/prng/) «Генерация случайных чисел слишком важна, чтобы оставлять её на волю случая» - афоризм математика Роберта Кавью.

Comments