Mengapa bit dalam byte terdistribusi secara merata?

0

Saya mengambil bit 1mil pertama dari file video acak, dan kemudian untuk setiap byte saya memetakan setiap bit ke bin, misalnya

c_b = ''.join(format(ord(b), '08b') for b in c)
bin1.append(c_b[0])

Kemudian dihitung:

bin1_counted = Counter(bin1)

dan hasilnya adalah:

Counter({'0': 646491, '1': 603686})
Counter({'0': 642133, '1': 608044})
Counter({'0': 644298, '1': 605879})
Counter({'0': 641961, '1': 608216})
Counter({'0': 641778, '1': 608399})
Counter({'0': 640538, '1': 609639})
Counter({'0': 641531, '1': 608646})

Itu jelas menunjukkan distribusi yang sama. Tetapi saya berharap seseorang dapat menjelaskan kepada saya mengapa demikian, dengan asumsi saya bahwa bit pertama dalam setiap byte seharusnya memiliki lebih 0dari 1karena saya berpikir bahwa mungkin ada semacam distribusi lonceng dari setiap byte 'posisi, yaitu saya mengharapkan bit pertama / kedua dari setiap byte memiliki lebih banyak 0karena karakter dapat diwakili sebelum mencapai 64?

Tjorriemorrie
sumber
Apa yang Anda maksud dengan "karakter" dalam file video?
choroba
1
Jika Anda melihat teks maka mungkin Anda akan melihat pola, tetapi data video terkompresi tidak akan menggunakan set karakter ASCII. Itu akan menggunakan berbagai bit yang tersedia untuk memastikan bahwa data output tidak hanya memiliki ruang "terbuang".
Mokubai
Saya berharap melihat 8 hasil, ada 7. Apa yang saya lewatkan?
Kamil Maciorowski
@KamilMaciorowski Saya baru saja ketinggalan menyalin baris terakhir
Tjorriemorrie
@ Choroba, python lang ini membacanya seperti itu ord(b), '08b') for b in c. Saya harus ord()masing - masing karakter berikutnya?
Tjorriemorrie

Jawaban:

4

Itu tidak mengherankan mengingat jenis data yang Anda lihat.

Video-stream terdiri dari data yang sangat terkompresi.
Melihat byte mentah ini muncul sebagai data acak yang hampir sempurna.
Itu adalah properti dasar dari data kompresi tinggi (entropi tinggi).

Dan data acak yang hampir sempurna memiliki distribusi acak yang hampir sempurna, yang berarti setiap bit memiliki distribusi yang sama.

Jika Anda melakukan hal yang sama pada file teks ASCII yang besar, Anda akan melihat bahwa bit yang paling signifikan (2 ^ 7) tidak akan muncul sama sekali (atau hanya beberapa kali paling banyak) dan beberapa lainnya akan muncul dengan frekuensi yang SANGAT tinggi .
Itu karena ASCII memiliki distribusi yang sangat miring dengan nilai-nilai yang paling banyak digunakan berkerumun di beberapa himpunan bagian kecil dalam kisaran 0,255.

Tonny
sumber
Terima kasih, saya mungkin seharusnya tahu kompresi tinggi harus menyebabkan itu. Hanya ingin yakin tentang itu.
Tjorriemorrie