මෙහි සිටින සෑම කෙනෙක්ම කේතය ක්රියාත්මක වන ආකාරය පැහැදිලි කිරීම සහ ඔබේම උදාහරණ ගොඩනඟා ගත හැකි ආකාරය පෙන්වීම සඳහා විශාල කාර්යයක් ඉටු කළහ, නමුත් මෙන්න තොරතුරු න්යායාත්මක පිළිතුරක් වන්නේ තිරිසන් බල සෙවීම අවසානයේදී සොයාගත හැකි විසඳුමක් පවතිනු ඇතැයි අපට සාධාරණ ලෙස අපේක්ෂා කළ හැක්කේ මන්ද යන්නයි.
විවිධ කුඩා අකුරු 26 අපගේ හෝඩිය සාදයි Σ
. විවිධ දිගින් යුත් වචන උත්පාදනය කිරීමට ඉඩ දීම සඳහා, අපි දිගින් ⊥
දිගට හෝඩියක් ලබා දීම සඳහා ටර්මිනේටර් සංකේතයක් එකතු කරමු Σ' := Σ ∪ {⊥}
.
α
සංකේතයක් සහ X ඒකාකාරව බෙදා හරින අහඹු විචල්යයක් වේවා Σ'
. එම සංකේතය ලබා ගැනීමේ සම්භාවිතාව P(X = α)
සහ එහි තොරතුරු අන්තර්ගතය I(α)
පහත පරිදි වේ:
පී (X = α) = 1 / | Σ '| = 1/27
I (α) = -log₂ [P (X = α)] = -log₂ (1/27) = log₂ (27)
වචනයක් ω ∈ Σ*
සහ එහි ⊥-
අවසන් වූ ප්රතිවිරුද්ධ පාර්ශවය සඳහා ω' := ω · ⊥ ∈ (Σ')*
, අපට තිබේ
මම (ω): = මම (ω ') = | ω' | * log₂ (27) = (| ω | + 1) * log₂ (27)
ව්යාජ සංඛ්යා උත්පාදක යන්ත්රය (පීආර්එන්ජී) බිට් 32 බීජයකින් ආරම්භ කර ඇති හෙයින්, අපට බොහෝ වචන බලාපොරොත්තු විය හැකිය
Floor = මහල [32 / log₂ (27)] - 1 = 5
අවම වශයෙන් එක් බීජයකින් ජනනය කිරීමට. අපි අක්ෂර 6 ක වචනයක් සෙවුවද, අපි තවමත් 41.06% ක් පමණ සාර්ථක වනු ඇත. එතරම් අවුල් සහගත නොවේ.
අකුරු 7 ක් සඳහා අපි 1.52% ට ආසන්නව බලා සිටිමු, නමුත් එය උත්සාහ කිරීමට පෙර මම එය තේරුම් ගෙන නැත:
#include <iostream>
#include <random>
int main()
{
std::mt19937 rng(631647094);
std::uniform_int_distribution<char> dist('a', 'z' + 1);
char alpha;
while ((alpha = dist(rng)) != 'z' + 1)
{
std::cout << alpha;
}
}
ප්රතිදානය බලන්න: http://ideone.com/JRGb3l