Случайное изображение





Задача: получить и проанализировать "случайные" изображения.
Анализ заключается в том чтобы проверить идею того, что из всего множества изображений может выпасти действительное(реальное) изображение. Причём возможно это изображение может быть изображением настоящего, будущего или прошедшего.

Например: пусть случайным образом с генерируется случайное изображение размером 640x480 пикселей.
То есть каждый пиксель этого изображения может быть любым цветом (любым из примерно 16 000 000 цветов). Чисто теоретически могут выпасть вот такие изображения:








Могут и такие:









То есть по сути может выпасть совершенно любое изображение... То есть вообще любое. Границы здесь устанавливаются количеством цветов и размером изображения.

Теперь попробуем упростить задачу! Будем генерировать изображения только из двух цветов - чёрного и белого. Попытаемся представить какие могут выпасть изображения? Да тоже довольно интересные. Это может быть какой то текст или какая то геометрия тел, в общем может выпасть тоже какая нибудь рациональная информация. А может и выпасть просто "бешеный" набор точек.

В общем подключим программирование и займёмся практикой. Напишем программу, которая будет "случайно" генерировать изображение из чёрных и белых точек. Слово случайное здесь в кавычках потомучто случайность вообще говоря философский вопрос. То есть ещё науке точно неизвесно, существует ли абсолютная случайность.

program prog1;
uses graphabc;
var w,h,N1,N2,a:integer;

function f1:integer;
begin

if random(2)=1 then begin
inc(N1);
Result:=RGB(255,255,255);

end
 else begin
 inc(N2);
Result:=RGB(0,0,0);  end;
end;


  procedure p1;
  begin
  N1:=0;
N2:=0;

for w:=1 to 640 do begin
  for h:=1 to 480 do
   setpixel(w,h,f1);
end;
// после получения изображения просканировать его на количество чёрных и белых точек
      writeln(a,') ','N1= ',N1,', N1= ',N2,' N1/N2= ', N1/N2, ' N1/N= ',N1/(649*480),' N2/N= ',N2/(649*480));
            inc(a);
          p1;
  end;

begin
        SetWindowWidth(640);
SetWindowHeight(480);
    a:=1;
  p1;
end.



В итоге получаеться вот такая не очень ожедаемая картина.
В течение 1000 разных генераций изображений, примерно выпадают одни и теже изображения, а именно беспорядочное расположение белых и чёрных точек! Вот как это выглядит:

(3 разных генерации)     
(эти же генерации только в полном размере)







После токого наблюдения кажется что-то не ладным... А именно то что если призадуматся, то кажется что число чёрных точек совпадает с числом белых. Хочется подсчитать сколько и тех и тех получается. Вписваем в программу(смотрите в код программы) код подсчёта числа точек. А также найдём отношение числа чёрных точек и былых к общему числу точек(для того чтобы увидеть каку часть всех точек занимают чёрные или белые точки).
С генерируем 1000 изображений. Получаем вот такие данные:

Где
N1 - число белых точек
N2- число чёрных точек
N1/N2 - отношение чёрных и белых точек, то есть во сколько раз одних больше других
N1/N - отношение белых и всех точек, то есть какую часть всех точек занимают белые точки
N2/N - отношение белых и всех точек, то есть какую часть всех точек занимают чёрные точки
N=640*480 (число пикселей)


  
1) N1= 153764, N2= 153436 N1/N2= 1.00213769910582 N1/N= 0.500533854166667 N2/N= 0.499466145833333
2) N1= 153763, N2= 153437 N1/N2= 1.00212465050803 N1/N= 0.500530598958333 N2/N= 0.499469401041667
3) N1= 153367, N2= 153833 N1/N2= 0.996970740998355 N1/N= 0.499241536458333 N2/N= 0.500758463541667
4) N1= 154097, N2= 153103 N1/N2= 1.00649236135151 N1/N= 0.501617838541667 N2/N= 0.498382161458333
5) N1= 153506, N2= 153694 N1/N2= 0.998776790245553 N1/N= 0.499694010416667 N2/N= 0.500305989583333
6) N1= 153748, N2= 153452 N1/N2= 1.00192894194927 N1/N= 0.500481770833333 N2/N= 0.499518229166667
7) N1= 153301, N2= 153899 N1/N2= 0.996114334726022 N1/N= 0.499026692708333 N2/N= 0.500973307291667
8) N1= 153967, N2= 153233 N1/N2= 1.00479009090731 N1/N= 0.501194661458333 N2/N= 0.498805338541667
9) N1= 153592, N2= 153608 N1/N2= 0.999895838758398 N1/N= 0.499973958333333 N2/N= 0.500026041666667
10) N1= 153962, N2= 153238 N1/N2= 1.00472467664678 N1/N= 0.501178385416667 N2/N= 0.498821614583333
11) N1= 153172, N2= 154028 N1/N2= 0.99444256888358 N1/N= 0.498606770833333 N2/N= 0.501393229166667
12) N1= 153632, N2= 153568 N1/N2= 1.00041675349031 N1/N= 0.500104166666667 N2/N= 0.499895833333333
13) N1= 153261, N2= 153939 N1/N2= 0.995595658020385 N1/N= 0.498896484375 N2/N= 0.501103515625
14) N1= 153398, N2= 153802 N1/N2= 0.997373246121637 N1/N= 0.499342447916667 N2/N= 0.500657552083333
15) N1= 153588, N2= 153612 N1/N2= 0.999843762206078 N1/N= 0.4999609375 N2/N= 0.5000390625
16) N1= 153571, N2= 153629 N1/N2= 0.999622467112329 N1/N= 0.499905598958333 N2/N= 0.500094401041667
17) N1= 153762, N2= 153438 N1/N2= 1.00211160208032 N1/N= 0.50052734375 N2/N= 0.49947265625
18) N1= 153853, N2= 153347 N1/N2= 1.00329970589578 N1/N= 0.500823567708333 N2/N= 0.499176432291667
19) N1= 153146, N2= 154054 N1/N2= 0.994105962844198 N1/N= 0.498522135416667 N2/N= 0.501477864583333
20) N1= 152898, N2= 154302 N1/N2= 0.990900960454174 N1/N= 0.49771484375 N2/N= 0.50228515625
21) N1= 153440, N2= 153760 N1/N2= 0.997918834547347 N1/N= 0.499479166666667 N2/N= 0.500520833333333
22) N1= 153562, N2= 153638 N1/N2= 0.999505330712454 N1/N= 0.499876302083333 N2/N= 0.500123697916667
23) N1= 153679, N2= 153521 N1/N2= 1.0010291751617 N1/N= 0.500257161458333 N2/N= 0.499742838541667
24) N1= 153503, N2= 153697 N1/N2= 0.998737776274098 N1/N= 0.499684244791667 N2/N= 0.500315755208333
25) N1= 153907, N2= 153293 N1/N2= 1.00400540142081 N1/N= 0.500999348958333 N2/N= 0.499000651041667
26) N1= 153893, N2= 153307 N1/N2= 1.00382239558533 N1/N= 0.500953776041667 N2/N= 0.499046223958333
27) N1= 153553, N2= 153647 N1/N2= 0.999388208035302 N1/N= 0.499847005208333 N2/N= 0.500152994791667
28) N1= 153493, N2= 153707 N1/N2= 0.998607740701465 N1/N= 0.499651692708333 N2/N= 0.500348307291667
29) N1= 153640, N2= 153560 N1/N2= 1.00052096900234 N1/N= 0.500130208333333 N2/N= 0.499869791666667
30) N1= 153720, N2= 153480 N1/N2= 1.00156372165754 N1/N= 0.500390625 N2/N= 0.499609375
31) N1= 153237, N2= 153963 N1/N2= 0.995284581360457 N1/N= 0.498818359375 N2/N= 0.501181640625
32) N1= 153892, N2= 153308 N1/N2= 1.00380932501892 N1/N= 0.500950520833333 N2/N= 0.499049479166667
33) N1= 153128, N2= 154072 N1/N2= 0.993872994444156 N1/N= 0.498463541666667 N2/N= 0.501536458333333
34) N1= 153417, N2= 153783 N1/N2= 0.997620023019449 N1/N= 0.499404296875 N2/N= 0.500595703125
35) N1= 153310, N2= 153890 N1/N2= 0.996231074143869 N1/N= 0.499055989583333 N2/N= 0.500944010416667
36) N1= 153671, N2= 153529 N1/N2= 1.00092490669515 N1/N= 0.500231119791667 N2/N= 0.499768880208333
37) N1= 153331, N2= 153869 N1/N2= 0.996503519227395 N1/N= 0.499124348958333 N2/N= 0.500875651041667
38) N1= 153731, N2= 153469 N1/N2= 1.00170718516443 N1/N= 0.500426432291667 N2/N= 0.499573567708333
39) N1= 153846, N2= 153354 N1/N2= 1.00320826323409 N1/N= 0.50080078125 N2/N= 0.49919921875
40) N1= 153577, N2= 153623 N1/N2= 0.999700565670505 N1/N= 0.499925130208333 N2/N= 0.500074869791667
41) N1= 153492, N2= 153708 N1/N2= 0.998594738074791 N1/N= 0.4996484375 N2/N= 0.5003515625
42) N1= 153961, N2= 153239 N1/N2= 1.00471159430693 N1/N= 0.501175130208333 N2/N= 0.498824869791667
43) N1= 153662, N2= 153538 N1/N2= 1.00080761765817 N1/N= 0.500201822916667 N2/N= 0.499798177083333
44) N1= 153633, N2= 153567 N1/N2= 1.00042977983551 N1/N= 0.500107421875 N2/N= 0.499892578125
45) N1= 153912, N2= 153288 N1/N2= 1.00407076874902 N1/N= 0.501015625 N2/N= 0.498984375
46) N1= 153669, N2= 153531 N1/N2= 1.00089884127635 N1/N= 0.500224609375 N2/N= 0.499775390625
47) N1= 153361, N2= 153839 N1/N2= 0.996892855517782 N1/N= 0.499222005208333 N2/N= 0.500777994791667
48) N1= 153651, N2= 153549 N1/N2= 1.00066428306274 N1/N= 0.500166015625 N2/N= 0.499833984375
49) N1= 153446, N2= 153754 N1/N2= 0.99799680008325 N1/N= 0.499498697916667 N2/N= 0.500501302083333
50) N1= 153364, N2= 153836 N1/N2= 0.996931797498635 N1/N= 0.499231770833333 N2/N= 0.500768229166667
51) N1= 153721, N2= 153479 N1/N2= 1.00157676294477 N1/N= 0.500393880208333 N2/N= 0.499606119791667
52) N1= 153703, N2= 153497 N1/N2= 1.00134204577288 N1/N= 0.500335286458333 N2/N= 0.499664713541667
53) N1= 153559, N2= 153641 N1/N2= 0.999466288295442 N1/N= 0.499866536458333 N2/N= 0.500133463541667
54) N1= 153801, N2= 153399 N1/N2= 1.0026206168228 N1/N= 0.500654296875 N2/N= 0.499345703125
55) N1= 153570, N2= 153630 N1/N2= 0.999609451279047 N1/N= 0.49990234375 N2/N= 0.50009765625
56) N1= 153260, N2= 153940 N1/N2= 0.995582694556321 N1/N= 0.498893229166667 N2/N= 0.501106770833333
57) N1= 154023, N2= 153177 N1/N2= 1.00552302238587 N1/N= 0.501376953125 N2/N= 0.498623046875
58) N1= 154104, N2= 153096 N1/N2= 1.00658410409155 N1/N= 0.501640625 N2/N= 0.498359375
59) N1= 153631, N2= 153569 N1/N2= 1.00040372731476 N1/N= 0.500100911458333 N2/N= 0.499899088541667
60) N1= 153627, N2= 153573 N1/N2= 1.00035162430896 N1/N= 0.500087890625 N2/N= 0.499912109375
показать всё..

Как видим во всех изображениях, отношение количества чёрных и белых точек близко к еденице. А это значит что их почти поровну.
Если вспомнить теорию вероятности, оказывается что так и должно быть. Чёрные и белые точки - это как "честная" монетка(то есть монета, шанс которой выпасть одной из сторон равно велик). Подбрасывая монету какоето число раз, отношение количества выпадения орла и решки может существенно отличатся от единицы, но чем больше бросков монеты, тем больше это отношение будет похоже на единицу. А в нашем случае количество бросков равно 640x480 = 307200. Это не мало, по этому так ярко выражается совпадение числа разных точек.
Но все это не значит что так будет всегда, вполне вероятно что допустим чёрных точек вовсе может не выпасти! Просто вероятность этого невероятно мала... А именно . И это не вероятно малое число. Даже просто

А наше число
И такая вероятность не только для изображения со всеми белыми точками, она для любого конкретного изображения размером 640x480 в котором возможно только два цвета - чёрный и белый.

Да... получается что конкретное изображение практически нереально cгенерировать. Но интересно ещё кое-что, сколько вообще может существовать "реальных" изображений? Ведь их не так уж и мало... Шанс выпасть уже любого "рационального"(с каким-то смыслом) изображения гораздо больше чем конкретного. Но мне пока не приходит в голову как определить количество реальных всевозможных изображений.
И похоже "рациональных" изображений ГОРАЗДО меншье чем "всяческих".

И что же получается. Вероятность не даёт нам сгенерировать хоть чуточку какого нибудь чёрно-белого изображения? Вообще говоря да... Она стремиться или по-другому сказать наеболее вероятна к "беспорядочным" изображениям. В общем попытаюсь сгенерировать кучу изображений чтобы хоть раз получить отношение точек не близкое к единице.
Сайт управляется системой uCoz