ව්‍යාජ හා සැබවින්ම අහඹු සංඛ්‍යා වෙනස් වන්නේ කෙසේද සහ එය වැදගත් වන්නේ ඇයි?


670

මට කවදාවත් මේක ලැබුනේ නැහැ. ඔබ ඕනෑම භාෂාවක කුඩා වැඩසටහනක් ලියන බව පවසන්න. රෝල් 600,000 කට පසු, සෑම අංකයක්ම 100,000 වාරයක් පෙරළීමට ඉඩ තිබුණි, එය මා බලාපොරොත්තු වන දෙයයි.

'සැබෑ අහඹුභාවයට' කැපවූ වෙබ් අඩවි ඇත්තේ ඇයි? නිසැකවම, ඉහත නිරීක්‍ෂණයට අනුව, ඕනෑම සංඛ්‍යාවක් ලබා ගැනීමේ සම්භාවිතාව එය කොපමණ සංඛ්‍යාවක් තෝරා ගත හැකිද යන්නට වඩා හරියටම 1 ක් පමණ වේ.

මම එය පයිතන් හි අත්හදා බැලුවෙමි : මෙන්න රෝල් මිලියන 60 ක ප්‍රති result ලය. ඉහළම විචලනය 0.15 වැනි ය. එය අහඹු ලෙස එය ලබා ගැනීමට යන්නේ නැද්ද?

1 - 9997653 2347.0
2 - 9997789 2211.0
3 - 9996853 3147.0
4 - 10006533 -6533.0
5 - 10002774 -2774.0
6 - 9998398 1602.0

1
දෘඩාංගයෙන් ජනනය කරන ලද අහඹු සංඛ්‍යා පිළිබඳ විකිපීඩියා ලිපිය බලන්න. මෙයද බලන්න - stats.stackexchange.com/questions/32794/…
ස්ථාවර මාළු

21
"ඩයිස් රෝල්ස්" යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්ද? එහි රොබෝ අතක් සහ කැමරාවක් සවි කර තිබේද?
starblue

3
ඔබගේ ස්වරයේ සාමාන්‍ය සාරාංශය සමඟ මම එකඟ වන අතර, අපි බොහෝ විට මේ ගැන ඕනෑවට වඩා කනස්සල්ලට පත්වන නමුත් එය සැබෑ ජීවිතයේ දී සූරාකෑමට ලක්ව ඇත: en.wikipedia.org/wiki/Ronald_Dale_Harris
Grady Player

3
සබැඳි පෝකර් ක්‍රීඩාවක් වැදගත් වන්නේ මන්ද යන්න පිළිබඳ සැබෑ අහඹු බවක් නැතිවීම පිළිබඳ මෙම ලිපිය බලන්න .
Varaquilex

1
ඔබ 0-5 කවුන්ටරයක් ​​තබා ඒ අනුව ගෝරිලියන 666 වතාවක් ඩයිස් රෝල් කළහොත් ඔබට සමාන බෙදාහැරීමක් ද ලැබෙනු ඇත.
jcora

Answers:


1388

ඔබ, මම සහ අප දෙදෙනාම විශ්වාස කරන සේවාදායකයක් පමණක් පරිගණක පෝකර් ගහමු. අපි සෙල්ලම් කිරීමට පෙර සේවාදායකයා ව්‍යාජ සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්‍රයක් භාවිතා කරයි. එබැවින් තට්ටු බිලියන හතරක් පමණ තිබිය හැකිය.

මගේ අතේ කාඩ්පත් පහක් ඇත - පෙනෙන විදිහට අපි ටෙක්සාස් හෝල්ඩ් එම් සෙල්ලම් කරන්නේ නැත. කාඩ්පත් මට එකක්, ඔබට එකක්, මට එකක්, එකක් ඔබට, සහ යනාදී වශයෙන් ගනුදෙනු කර ඇතැයි සිතමු. ඒ නිසා මම තට්ටුවේ පළමු, තෙවන, පස්වන, හත්වන සහ නවවන කාඩ්පත් ඇත.

මීට පෙර මම ව්‍යාජ සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්රය බිලියන හතරක් වරක් ධාවනය කළෙමි, එක් එක් බීජ සමඟ එක් වරක්, එක් එක් බීජ සමඟ එක් වරක් ජනනය කළ පළමු කාඩ්පත දත්ත ගබඩාවකට ලියා තැබුවෙමි. මගේ පළමු කාඩ්පත ස්පා ades ් of යේ රැජින යැයි සිතමු. එමඟින් පෙන්විය හැකි සෑම තට්ටු 52 න් එකක පළමු කාඩ්පත ලෙස එකක් පමණක් පෙන්වයි, එබැවින් අපි හැකි තට්ටු බිලියන හතරේ සිට මිලියන 80 ක් හෝ ඊට අඩු කර ඇත.

මගේ දෙවන කාඩ්පත හදවත් තුන යැයි සිතමු. පළමු අංකය ලෙස ස්පා ades ් of යේ රැජින නිපදවන බීජ මිලියන 80 භාවිතා කරමින් මම දැන් මගේ ආර්එන්ජී මිලියන 80 වාරයක් ධාවනය කරමි. මෙය මට තත්පර කිහිපයක් ගතවේ. හදවත් තුන නිපදවන සියලුම තට්ටු මම තුන්වන කාඩ්පත ලෙස සටහන් කරමි - මගේ අතේ දෙවන කාඩ්පත. එය නැවතත් තට්ටු වලින් 2% ක් පමණයි, එබැවින් දැන් අපි තට්ටු මිලියන 2 ක් දක්වා පහත බැස ඇත.

මගේ අතේ ඇති තුන්වන කාඩ්පත සමාජ ශාලා 7 යැයි සිතමු. මගේ කාඩ්පත් දෙක සමඟ කටයුතු කරන බීජ මිලියන 2 ක දත්ත ගබඩාවක් මා සතුව ඇත; තුන්වන කාඩ්පත ලෙස සමාජ ශාලා 7 නිපදවන තට්ටු වලින් 2% ක් සොයා ගැනීමට මම තවත් මිලියන 2 වතාවක් මගේ RNG ධාවනය කරමි, අපි පහළට යන්නේ තට්ටු 40,000 ක් පමණි.

මෙය සිදුවන ආකාරය ඔබට පෙනේ. මගේ සිව්වන කාඩ්පත නිපදවන සියලුම බීජ සොයා ගැනීමට මම තවත් RNG 40000 වාරයක් ධාවනය කරමි, එය අපව තට්ටු 800 ක් දක්වා පහතට ඇද දමයි, ඉන්පසු මගේ පස්වන කාඩ්පත නිපදවන ~ 20 බීජ ලබා ගැනීම සඳහා තවත් 800 වතාවක් ධාවනය කරන්න, දැන් මම එම කාඩ්පත් තට්ටු විස්ස උත්පාදනය කරන්න, ඔබට හැකි අත් විස්සෙන් එකක් ඇති බව මම දනිමි. එපමණක් නොව, මම ඊළඟට අඳින්නේ කුමක් ද යන්න පිළිබඳව මට හොඳ අදහසක් ඇත.

සැබෑ අහඹු බව වැදගත් වන්නේ මන්දැයි දැන් ඔබට පෙනේද? ඔබ එය විස්තර කරන ආකාරය අනුව, බෙදා හැරීම වැදගත් යැයි ඔබ සිතන නමුත් බෙදා හැරීම යනු ක්‍රියාවලියක් අහඹු ලෙස සිදු නොවේ. අනාවැකි නොකිරීම යනු ක්‍රියාවලියක් අහඹු ලෙස සිදු කරයි.

යාවත්කාලීන කරන්න

(ඔවුන්ගේ ව්‍යුහාත්මක නොවන ස්වභාවය නිසා දැන් මකා දමා ඇත) අදහස් මත පදනම්ව, මෙය කියවා ඇති අයගෙන් අවම වශයෙන් 0.3% ක් මගේ අදහස අනුව ව්‍යාකූල වී සිටිති. මා විසින් සිදු නොකළ හෝ ඊට වඩා නරක දේට එරෙහිව මිනිසුන් තර්ක කරන විට, මම ඒවා නොකළෙමි යන උපකල්පනය මත මා කළ කරුණු සඳහා තර්ක කරන විට, මම වඩාත් පැහැදිලිව හා ප්‍රවේශමෙන් පැහැදිලි කළ යුතු බව මම දනිමි.

බෙදා හැරීම යන වචනය වටා විශේෂ ව්‍යාකූලතාවයක් ඇති බව පෙනේ, එබැවින් භාවිතයන් ප්‍රවේශමෙන් කැඳවීමට මට අවශ්‍යය.

දැනට ඇති ප්‍රශ්න:

  • ව්‍යාජ සංඛ්‍යා සහ සැබවින්ම අහඹු සංඛ්‍යා වෙනස් වන්නේ කෙසේද?
  • වෙනස වැදගත් වන්නේ ඇයි?
  • පීආර්එන්ජී හි ප්‍රතිදානය බෙදා හැරීම සමඟ වෙනස්කම් වලට යම් සම්බන්ධයක් තිබේද?

අහඹු ලෙස කාඩ්පත් තට්ටුවක් ජනනය කිරීම සඳහා කදිම ක්‍රමයක් සලකා බැලීමෙන් පටන් ගනිමු . එවිට අපි බලමු තට්ටු උත්පාදනය සඳහා වෙනත් ශිල්පීය ක්‍රම වෙනස් වන්නේ කෙසේද, සහ එම වෙනසෙන් ප්‍රයෝජන ගත හැකි නම්.

අපට මැජික් පෙට්ටියක් ලේබල් කර ඇතැයි සිතීමෙන් ආරම්භ කරමු TRNG. එහි ආදානය ලෙස අපි එයට පූර්ණ සංඛ්‍යාවක් n ට වඩා වැඩි හෝ සමාන වේ, සහ එහි ප්‍රතිදානය ලෙස එය අපට එක හා n අතර සැබවින්ම අහඹු සංඛ්‍යාවක් ලබා දෙයි. කොටුවේ ප්‍රතිදානය මුළුමනින්ම අනාවැකි කිව නොහැකි ය (එකක් හැර වෙනත් සංඛ්‍යාවක් ලබා දුන් විට) සහ එකක් සහ n අතර ඕනෑම සංඛ්‍යාවක් තවත් එකක් තරම් විය හැකිය; බව ඒ කියන්නේ බෙදාහැරීමේ වේ නිල ඇඳුම . (අපට කළ හැකි අහඹු බව පිළිබඳ තවත් දියුණු සංඛ්‍යාලේඛන චෙක්පත් තිබේ; එය මගේ තර්කයට ආවේණික නොවන බැවින් මම මෙම කරුණ නොසලකා හරිමි. TRNG උපකල්පනය අනුව සංඛ්‍යාත්මකව අහඹුයි.)

අපි ආරම්භ කරන්නේ නොකැඩූ කාඩ්පත් තට්ටුවකින්. අපි කොටුව ඉල්ලන්නේ එකක් සහ 52 අතර සංඛ්‍යාවක් - එනම් TRNG(52). එය කුමන අංකයක් ආපසු ලබා දුන්නද, අපි අපගේ කාඩ්පත් අපගේ වර්ග කළ තට්ටුවෙන් ගණන් කර එම කාඩ්පත ඉවත් කරමු. එය මාරු කළ තට්ටුවේ පළමු කාඩ්පත බවට පත්වේ. TRNG(51)දෙවන කාඩ්පත තෝරා ගැනීම සඳහා අපි ඉල්ලා සිටිමු .

එය බැලීමට තවත් ක්‍රමයක් නම්: 52 ක් ඇත! = 52 x 51 x 50 ... x 2 x 1 විය හැකි තට්ටු, එය දළ වශයෙන් 2 226 කි. අපි ඒවායින් එකක් අහඹු ලෙස තෝරාගෙන ඇත්තෙමු.

දැන් අපි කාඩ්පත් සමඟ ගනුදෙනු කරමු. මම මගේ කාඩ්පත් දෙස බලන විට ඔබ සතුව ඇති කාඩ්පත් ගැන මට කිසිම අදහසක් නැත . (මා සතුව ඇති කාඩ්පත් කිසිවක් ඔබ සතුව නොමැති බව පැහැදිලිය.) ඒවා සමාන සම්භාවිතාවක් ඇති ඕනෑම කාඩ්පත් විය හැකිය.

එබැවින් මම මෙය පැහැදිලිව පැහැදිලි කිරීමට වග බලා ගන්න. එක් එක් නිමැවුමේ ඒකාකාර ව්‍යාප්තිය අප සතුව ඇත TRNG(n); එක් එක් සම්භාවිතාව 1 / n අතර 1 සහ n අතර සංඛ්‍යාවක් තෝරා ගනී. එසේම, මෙම ක්‍රියාවලියේ ප්‍රති result ලය වන්නේ අප 52 න් එකක් තෝරාගෙන තිබීමයි! 1/52 ක සම්භාවිතාව සමඟ හැකි තට්ටු !, එසේ බෙදාහැරීම හැකි තට්ටු කුලකයකි කට වේ නිල ඇඳුම.

කමක් නැහැ.

දැන් අපි අඩු ලේබල් සහිත මැජික් පෙට්ටියක් ඇතැයි සිතමු PRNG. ඔබට එය භාවිතා කිරීමට පෙර, එය බිට් 32 අත්සන් නොකළ අංකයකින් බීජ කළ යුතුය .

32 : ඇයි ? එය 64- හෝ 256- හෝ බිට් 10000 අංකයකින් බීජ කළ නොහැකිද? ෂුවර්. නමුත් (1) ප්‍රායෝගිකව බොහෝ පීආර්එන්ජී බිටු 32 කින් යුක්ත වන අතර (2) බීජ සෑදීම සඳහා ඔබට බිටු 10000 ක් අහඹු ලෙස තිබේ නම් ඔබ කිසිසේත් පීආර්එන්ජී භාවිතා කරන්නේ ඇයි? ඔබට දැනටමත් බිටු 10000 ක අහඹු බවක් තිබේ!

කෙසේ වෙතත්, PRNG ක්‍රියා කරන ආකාරය වෙත ආපසු යන්න: එය බීජ දැමූ පසු, ඔබ භාවිතා කරන ආකාරයටම එය භාවිතා කළ හැකිය TRNG. එනම්, ඔබ එය අංකයක් පසුකර යන අතර, එය ඔබට 1 සහ n අතර සංඛ්‍යාවක් ආපසු ලබා දෙයි. එපමණක් නොව, එම නිමැවුමේ ව්‍යාප්තිය වැඩි හෝ අඩු ඒකාකාරී වේ. එනම්, අපි PRNG1 ත් 6 ත් අතර සංඛ්‍යාවක් ඉල්ලන විට , බීජ කුමක් වුවත්, දළ වශයෙන් හයෙන් එකක්, 1, 2, 3, 4, 5 හෝ 6 ලබා ගනී.

මට මෙම කරුණ කිහිප වතාවක් අවධාරණය කිරීමට අවශ්‍ය වන්නේ එය ඇතැම් විචාරකයින් ව්‍යාකූල කරන බැවිනි. PRNG හි ව්‍යාප්තිය අවම වශයෙන් ආකාර දෙකකින් ඒකාකාරී වේ. පළමුව, අපි කිසියම් විශේෂිත බීජයක් තෝරා ගනිමු යැයි සිතමු. PRNG(6), PRNG(6), PRNG(6)...මිලියනයක වාරයක් 1 සිට 6 දක්වා සංඛ්‍යා ඒකාකාරව බෙදා හරිනු ඇතැයි අපි අපේක්ෂා කරමු. දෙවනුව, අපි විවිධ බීජ මිලියනයක් තෝරාගෙන එක් එක් බීජ සඳහා එක් PRNG(6) වරක් කැඳවූයේ නම් , නැවතත් 1 සිට 1 දක්වා සංඛ්‍යා ඒකාකාරව බෙදා හැරීමක් අපේක්ෂා කරමු. 6. මෙම මෙහෙයුම් දෙකෙන්ම පීආර්එන්ජී හි ඒකාකාරිත්වය මා විස්තර කරන ප්‍රහාරයට අදාළ නොවේ .

මෙම ක්‍රියාවලිය ව්‍යාජ සසම්භාවී යැයි කියනුයේ කොටුවේ හැසිරීම සැබවින්ම මුළුමනින්ම නිර්ණය කරන බැවිනි; එය බීජ මත පදනම්ව කළ හැකි හැසිරීම් 2 32 න් එකක් තෝරා ගනී . එනම්, එය බීජ කළ පසු ඒකාකාර ව්‍යාප්තියක් සහිත සංඛ්‍යා අනුක්‍රමයක්PRNG(6), PRNG(6), PRNG(6), ... නිපදවන නමුත් එම අනුක්‍රමය මුළුමනින්ම තීරණය වන්නේ බීජයෙනි. ලබා දී ඇති ඇමතුම් අනුක්‍රමයක් සඳහා, කියන්න, PRNG (52), PRNG (51) ... සහ එසේ නම්, හැකි අනුපිළිවෙලවල් 2 32 ක් පමණි . බීජ අවශ්‍යයෙන්ම අපට ලැබෙන්නේ කුමන එකක්ද යන්න තෝරා ගනී.

තට්ටුවක් ජනනය කිරීම සඳහා සේවාදායකයා දැන් බීජයක් ජනනය කරයි. (කෙසේද? අපි නැවත එම ස්ථානයට පැමිණෙමු.) ඉන්පසු ඔවුන් අමතයි PRNG(52), PRNG(51)සහ පෙර පරිදිම තට්ටුව ජනනය කිරීම සඳහා.

මෙම ක්‍රමය මා විස්තර කළ ප්‍රහාරයට ගොදුරු වේ. අපි පළමුව සේවාදායකයට පහර දීමට පෙර, අපේ පෙට්ටියේ පිටපතක් 0 සමඟ බීජ කර එය ඉල්ලා සිටින්න PRNG(52). ඉන්පසු අපි 1 සමඟ නැවත බීජ, ඉල්ලන්න PRNG(52), සහ 2 32 -1 දක්වා එය ලියන්න .

දැන්, තට්ටු උත්පාදනය කිරීම සඳහා පීආර්එන්ජී භාවිතා කරන පෝකර් සේවාදායකයට කෙසේ හෝ බීජයක් ජනනය කළ යුතුය. ඔවුන් එසේ කරන්නේ කෙසේද යන්න ගැටළුවක් නොවේ. TRNG(2^32)සැබවින්ම අහඹු බීජයක් ලබා ගැනීමට ඔවුන්ට ඇමතිය හැකිය. නැතහොත් ඔවුන්ට අහඹු ලෙස අහඹු ලෙස බීජයක් ලෙස වර්තමාන කාලය ගත හැකිය; මම දන්නවා ඔයා කොච්චර වෙලාවද කියලා. මගේ ප්‍රහාරයේ කාරණය වන්නේ එය මගේ දත්ත ගබඩාව ඇති බැවින් එය වැදගත් නොවේ . මගේ පළමු කාඩ්පත දුටු විට මට හැකි බීජ වලින් 98% ක් ඉවත් කළ හැකිය. මගේ දෙවන කාඩ් පත දුටු විට මට තවත් 98% ක් ඉවත් කළ හැකිය. එසේ කිරීමෙන් අවසානයේදී මට හැකි බීජ අතළොස්සක් දක්වා බැස ගත හැකි අතර ඔබේ අතේ ඇති දේ බොහෝ දුරට දැන ගත හැකිය.

දැන්, නැවතත්, මට අවධාරණය කිරීමට අවශ්‍ය වන්නේ මෙහි උපකල්පනය නම්, අපි PRNG(6)මිලියනය වාරයක් ඇමතුවේ නම්, අපට සෑම අංකයක්ම දළ වශයෙන් හයෙන් එකක් ලැබෙනු ඇත. එම බෙදාහැරීම (වැඩි හෝ අඩු) ඒකාකාරී වන අතර , එම බෙදාහැරීමේ ඒකාකාරිත්වය ඔබ සැලකිලිමත් වන්නේ නම් , එය හොඳයි. ප්‍රශ්නයේ කාරණය වූයේ අප සැලකිලිමත් වන බෙදා හැරීම හැර වෙනත් දේවල් PRNG(6)තිබේද? පිළිතුර ඔව් . අපි අනපේක්ෂිත බව ගැනත් සැලකිලිමත් වෙමු .

ගැටළුව දෙස බැලිය හැකි තවත් ක්‍රමයක් නම්, ඇමතුම් මිලියනයක් බෙදා හැරීම PRNG(6)හොඳ විය හැකි වුවත්, පීආර්එන්ජී තෝරා ගත හැකි හැසිරීම් 2 32 කින් පමණක් තෝරාගෙන ඇති හෙයින් , හැකි සෑම තට්ටුවක්ම ජනනය කළ නොහැක. එය ජනනය කළ හැකි 2 226 න් 2 32 ක් පමණි ; ඉතා කුඩා කොටසක්. එබැවින් සියලු තට්ටු කට්ටලය පුරා බෙදා හැරීම ඉතා නරක ය. නමුත් නැවතත්, මෙහි මූලික ප්‍රහාරය පදනම් වී ඇත්තේ එහි නිමැවුමේ කුඩා නියැදියක අතීත සහ අනාගත හැසිරීම සාර්ථකව පුරෝකථනය කිරීමට අපට හැකිවීම මත ය . PRNG

මෙය ගිලෙන බවට වග බලා ගැනීම සඳහා තුන්වන හෝ හතර වතාවක් මෙය කියන්නම්. මෙහි බෙදාහැරීම් තුනක් තිබේ. පළමුව, අහඹු ලෙස බිටු 32 බීජ නිපදවන ක්‍රියාවලිය බෙදා හැරීම. එය පරිපූර්ණ අහඹු, අනපේක්ෂිත හා ඒකාකාරී විය හැකි අතර ප්‍රහාරය තවමත් ක්‍රියාත්මක වේ. දෙවනුව, ඇමතුම් මිලියනයක් බෙදා හැරීම PRNG(6). එය පරිපූර්ණ ලෙස ඒකාකාරී විය හැකි අතර ප්‍රහාරය තවමත් ක්‍රියාත්මක වනු ඇත. තෙවනුව, මා විස්තර කර ඇති ව්‍යාජ සසම්භාවී ක්‍රියාවලිය මඟින් තෝරාගත් තට්ටු බෙදා හැරීම. එම ව්‍යාප්තිය අතිශයින්ම දුර්වල ය; තෝරා ගත හැක්කේ අයිආර්එල් විය හැකි තට්ටු වලින් ඉතා සුළු කොටසක් පමණි. ප්‍රහාරය රඳා පවතින්නේ එහි ප්‍රතිදානය පිළිබඳ අර්ධ දැනුම මත පදනම්ව පීආර්එන්ජී හි හැසිරීමේ පුරෝකථනය මත ය .

ASIDE: මෙම ප්‍රහාරයට PRNG විසින් භාවිතා කරන නිශ්චිත ඇල්ගොරිතම කුමක්දැයි ප්‍රහාරකයා දැන ගැනීමට හෝ අනුමාන කිරීමට අවශ්‍ය වේ. එය යථාර්ථවාදීද නැද්ද යන්න විවෘත ප්‍රශ්නයකි. කෙසේ වෙතත්, ආරක්ෂක පද්ධතියක් සැලසුම් කිරීමේදී, ප්‍රහාරකයා වැඩසටහනේ සියලුම ඇල්ගොරිතමයන් දැන සිටියත්, ප්‍රහාර වලින් ආරක්ෂා වීමට ඔබ එය සැලසුම් කළ යුතුය . වෙනත් ක්‍රමයක් තබන්න: පද්ධතිය ආරක්‍ෂිත වීමට නම් රහසිගතව තිබිය යුතු ආරක්ෂක පද්ධතියක කොටස “යතුර” ලෙස හැඳින්වේ. ඔබ රහසක් ලෙස භාවිතා කරන ඇල්ගොරිතම මත ඔබේ පද්ධතිය රඳා පවතින්නේ නම් ඔබේ යතුරෙහි එම ඇල්ගොරිතම අඩංගු වේ . එය අතිශයින්ම දුර්වල තත්වයකි!

ඉදිරියට.

දැන් අපි තුන්වන මැජික් පෙට්ටියක් ලේබල් කර ඇතැයි සිතමු CPRNG. එය ගුප්ත-ශක්තිමත් අනුවාදයකි PRNG. එය බිට් 32 බීජයකට වඩා බිට් 256 බීජයක් ගනී. විය හැකි හැසිරීම් PRNG2 256 න් එකකින් බීජ තෝරා ගන්නා දේපල සමඟ එය බෙදා ගනී . අපගේ අනෙකුත් යන්ත්‍ර මෙන්, CPRNG(n)1 සහ n අතර ප්‍රති results ල ඒකාකාරව බෙදා හැරීම සඳහා විශාල ඇමතුම් සංඛ්‍යාවක් ඇති දේපල එහි ඇත : සෑම එකක්ම සිදුවන්නේ 1 / n වේ. අපට එයට එරෙහිව අපගේ ප්‍රහාරය මෙහෙයවිය හැකිද?

අපගේ මුල් ප්‍රහාරය සඳහා බීජ සිට සිතියම් 2 32 ගබඩා කිරීම අවශ්‍ය වේ PRNG(52). නමුත් 2 256 වඩා විශාල සංඛ්‍යාවක්; එය CPRNG(52)බොහෝ වාරයක් ධාවනය කර ප්‍රති .ල ගබඩා කිරීම සම්පූර්ණයෙන්ම කළ නොහැකි ය .

නමුත් බීජ පිළිබඳ සත්‍යයක් උපකල්පනය කර එහි වටිනාකම ලබා ගැනීමට වෙනත් ක්‍රමයක් තිබේ යැයි සිතමු CPRNG(52)? අපි මේ වන විට ගොළු වී සිටිමු. අපට මැජික් පෙට්ටිය ඇතුළත බැලීමට, එය ක්‍රියා කරන ආකාරය හදුනා ගැනීමට සහ ප්‍රතිදානය මත පදනම්ව බීජ පිළිබඳ කරුණු නිගමනය කළ හැකිද?

විස්තර කිරීමට නොහැකි තරමට සංකීර්ණ නමුත් සීපීආර්එන්ජී ඉතා දක්ෂ ලෙස නිර්මාණය කර ඇති අතර එමඟින් බීජ පිළිබඳ ඕනෑම ප්‍රයෝජනවත් කරුණක් පළමු නිමැවුමෙන් CPRNG(52)හෝ නිමැවුමේ ඕනෑම උප කුලකයකින් කොතරම් විශාල වුවත් අඩු කර ගත නොහැක .

හරි, දැන් අපි හිතමු සේවාදායකය CPRNGතට්ටු ජනනය කිරීමට භාවිතා කරයි. එයට බිට් 256 බීජයක් අවශ්‍යයි. එය එම බීජය තෝරා ගන්නේ කෙසේද? ප්‍රහාරකයාට පුරෝකථනය කළ හැකි කිසියම් වටිනාකමක් එය තෝරා ගන්නේ නම් හදිසියේම ප්‍රහාරය නැවත ශක්‍ය වේ. විය හැකි බීජ 2 256 න් අපට එය තීරණය කළ හැකි නම් , ඒවායින් බිලියන හතරක් පමණක් සේවාදායකයා විසින් තෝරා ගනු ලැබේ, එවිට අපි නැවත ව්‍යාපාරයට පිවිසෙමු . අපට නැවත මෙම ප්‍රහාරය දියත් කළ හැක්කේ, ජනනය කළ හැකි බීජ කුඩා සංඛ්‍යාව කෙරෙහි පමණක් අවධානය යොමු කිරීමෙනි.

එබැවින් 256-බිට් අංකය ඒකාකාරව බෙදා හැර ඇති බව සහතික කිරීම සඳහා සේවාදායකයා කටයුතු කළ යුතුය - එනම් හැකි සෑම බීජයක්ම 1/2 256 සම්භාවිතාවයකින් තෝරා ගනු ලැබේ . මූලික වශයෙන් සේවාදායකයා TRNG(2^256)-1බීජ උත්පාදනය සඳහා ඇමතිය යුතුය CPRNG.

තෝරාගත් බීජය කුමක්දැයි බැලීමට මට සේවාදායකය හැක් කර ඒ දෙස බැලීමට හැකි නම් කුමක් කළ යුතුද? එවැනි අවස්ථාවකදී, ප්‍රහාරකයා CPRNG හි සම්පූර්ණ අතීතය සහ අනාගතය දනී . සේවාදායකයාගේ කතුවරයා මෙම ප්‍රහාරයෙන් ආරක්ෂා විය යුතුය! (ඇත්ත වශයෙන්ම මට මෙම ප්‍රහාරය සාර්ථකව දියත් කළ හැකි නම්, බොහෝ විට මට මුදල් සෘජුවම මගේ බැංකු ගිණුමට මාරු කළ හැකිය, එබැවින් එය එතරම් සිත්ගන්නා සුළු නොවේ. කාරණය නම්: බීජ අනුමාන කිරීමට අපහසු රහසක් විය යුතු අතර, සැබවින්ම අහඹු 256-බිට් අංකය අනුමාන කිරීමට අපහසුය.)

ආරක්‍ෂාව පිළිබඳ මගේ කලින් කාරණය වෙත ආපසු යාම: බිට් 256 බීජය මෙම ආරක්ෂක පද්ධතියේ යතුරයි . CPRNG හි අදහස නම් යතුර සුරක්ෂිතව පවතින තාක් කල් පද්ධතිය ආරක්ෂිත බවයි ; ඇල්ගොරිතම පිළිබඳ අනෙක් සෑම කරුණක්ම දැන සිටියද, ඔබට ප්‍රධාන රහස තබා ගත හැකි තාක් කල්, ප්‍රතිවාදියාගේ කාඩ්පත් අනපේක්ෂිත ය.

හරි, ඒ නිසා බීජය රහසිගතව හා ඒකාකාරව බෙදා හැරිය යුතුයි. මන්ද එසේ නොවේ නම් අපට ප්‍රහාරයක් එල්ල කළ හැකියි. නිමැවුම් බෙදා හැරීම CPRNG(n)ඒකාකාරී යැයි උපකල්පනය කිරීමෙන් අපට තිබේ . හැකි සෑම තට්ටුවකම බෙදා හැරීම ගැන කුමක් කිව හැකිද?

ඔබට මෙසේ පැවසිය හැකිය: සීපීආර්එන්ජී මඟින් අනුක්‍රමික ප්‍රතිදානය 2 256 ක් ඇත, නමුත් ඇත්තේ 2 226 තට්ටු පමණි. එබැවින් තට්ටුවලට වඩා අනුපිළිවෙලවල් ඇත, එබැවින් අපි හොඳින්; හැකි සෑම IRL තට්ටුවක්ම දැන් (ඉහළ සම්භාවිතාවක් සහිතව) මෙම පද්ධතිය තුළ කළ හැකිය. ඒ හැර හොඳ තර්කයක් ...

2 226 යනු ආසන්න වශයෙන් 52 ක් පමණි. එය බෙදන්න. 2 256/52 ! එක් දෙයක් සඳහා 52 විය හැකි නිසා සම්පූර්ණ සංඛ්‍යාවක් විය නොහැක. 3 න් බෙදිය හැකි නමුත් දෙදෙනෙකුගේ බලයක් නැත! මෙය සම්පූර්ණ සංඛ්‍යාවක් නොවන බැවින් දැන් අපට සියලු තට්ටු කළ හැකි තත්වයක් ඇත , නමුත් සමහර තට්ටු අනෙක් ඒවාට වඩා වැඩිය .

එය පැහැදිලි නැතිනම්, කුඩා සංඛ්‍යා සමඟ තත්වය සලකා බලන්න. අපට A, B සහ C කාඩ්පත් තුනක් ඇතැයි සිතමු. අපි බිට් 8 බීජයක් සහිත PRNG එකක් භාවිතා කරමු යැයි සිතමු, එබැවින් බීජ 256 ක් ඇත. PRNG(3)බීජ මත පදනම්ව නිමැවුම් 256 ක් ඇත ; ඔවුන්ගෙන් තුනෙන් එකක් ඒ විය යුතු නැත, ඔවුන්ගෙන් තුනෙන් එකක් බී විය යුතු අතර ඉන් තුනෙන් එකක් සී විය යුතුය, මන්ද 256 ඒකාකාරව බෙදිය නොහැකි බැවිනි. ඔවුන්ගෙන් එක් අයෙකු කෙරෙහි කුඩා නැඹුරුවක් තිබිය යුතුය.

ඒ හා සමානව, 52 2 256 ට සමානව බෙදන්නේ නැත , එබැවින් පළමු කාඩ්පත තෝරාගත් විට සමහර කාඩ්පත් කෙරෙහි යම් නැඹුරුවක් තිබිය යුතු අතර අනෙක් අයගෙන් නැඹුරුතාවයක් තිබිය යුතුය.

බිට් 32 බීජයක් සහිත අපේ මුල් ක්‍රමයේ දැවැන්ත නැඹුරුවක් පැවති අතර හැකි තරම් තට්ටු කිසි විටෙකත් නිපදවා නැත. මෙම ක්‍රමය තුළ සියලුම තට්ටු නිෂ්පාදනය කළ හැකි නමුත් තට්ටු බෙදා හැරීම තවමත් දෝෂ සහිතය . සමහර තට්ටු අනෙක් ඒවාට වඩා තරමක් වැඩි ය.

දැන් ප්‍රශ්නය නම්: මෙම අඩුපාඩුව පදනම් කරගෙන අපට ප්‍රහාරයක් තිබේද? පිළිතුර ප්‍රායෝගිකව ඇත, බොහෝ විට නැත . සීපීආර්එන්ජී නිර්මාණය කර ඇත්තේ බීජ සැබවින්ම අහඹු නම්, සහ අතර වෙනස පැවසීමට පරිගණකමය වශයෙන් නොහැකි ය .CPRNGTRNG

හරි, ඒ නිසා අපි සාරාංශ කරමු.

ව්‍යාජ සංඛ්‍යා සහ සැබවින්ම අහඹු සංඛ්‍යා වෙනස් වන්නේ කෙසේද?

ඔවුන් ප්‍රදර්ශනය කරන පුරෝකථන මට්ටමේ මට්ටමට වෙනස් වේ.

  • සැබවින්ම අහඹු සංඛ්‍යා අනාවැකි කිව නොහැක.
  • බීජය තීරණය කිරීමට හෝ අනුමාන කිරීමට හැකි නම් සියලු ව්‍යාජ සසම්භාවී සංඛ්‍යා පුරෝකථනය කළ හැකිය.

වෙනස වැදගත් වන්නේ ඇයි?

මන්ද, පද්ධතියේ ආරක්ෂාව අනපේක්ෂිත ලෙස රඳා පවතින යෙදුම් ඇති බැවිනි .

  • සෑම කාඩ්පතක්ම තෝරා ගැනීමට TRNG භාවිතා කරන්නේ නම් පද්ධතිය අක්‍රීය වේ.
  • සෑම කාඩ්පතක්ම තෝරා ගැනීමට CPRNG භාවිතා කරන්නේ නම් බීජ අනපේක්ෂිත හා නොදන්නා නම් පද්ධතිය ආරක්ෂිත වේ.
  • කුඩා බීජ ඉඩක් ඇති සාමාන්‍ය පීආර්එන්ජී එකක් භාවිතා කරන්නේ නම් බීජ අනාවැකි කිව නොහැකි ද නැතිනම් පද්ධතිය ආරක්ෂිත නොවේ; මා විස්තර කර ඇති ආකාරයේ තිරිසන් බලවේග ප්‍රහාරයන්ට ගොදුරු වීමේ ඉඩකඩ ඉතා කුඩාය.

PRNG හි නිමැවුම් බෙදා හැරීම සමඟ වෙනස අතර යම් සම්බන්ධයක් තිබේද?

බෙදා හැරීම පිළිබඳ ප්රමිතියක් යටතට හෝ එවැන්නක් නොමැතිකම තනි ඇමතුම් සඳහා RNG(n)මම විස්තර තියෙනවා ප්රහාර එල්ල කිරීම සඳහා අදාළ නොවේ.

අප දැක ලෙස තියෙනවා, දෙදෙනාම PRNGහා CPRNGහැකි සියළු තට්ටු ඕනෑම පුද්ගලයෙකු තට්ටුවේ තෝරා සම්භාවිතාව දුර්වල බෙදාහැරීම් නිෂ්පාදනය. මෙම PRNGසැලකිය යුතු නරක ය, නමුත්, ඒ දෙක ම ප්රශ්න තියෙනවා.

තව එක ප්රශ්නයක්:

ටී.ආර්.එන්.ජී.

හේතු දෙකක්.

පළමුවැන්න: වියදම. TRNG මිල අධිකයි . සැබවින්ම අහඹු සංඛ්‍යා උත්පාදනය කිරීම දුෂ්කර ය. සීපීආර්එන්ජී අත්තනෝමතික ලෙස බොහෝ ඇමතුම් සඳහා හොඳ ප්‍රති results ල ලබා දෙයි බීජ සඳහා ටීආර්එන්ජී වෙත එක් ඇමතුමක් පමණි . පහළ පැත්ත ඇත්ත වශයෙන්ම ඔබ එම බීජය රහසක් ලෙස තබා ගත යුතුය .

දෙවන: සමහර විට අපි අවශ්ය අපේක්ෂා අපි ගැන සැලකිල්ලක් සියලු හොඳ බෙදා ඇත. ඔබ පරීක්ෂණ කට්ටලයක් සඳහා වැඩසටහන් යෙදවුම් ලෙස "අහඹු" දත්ත ජනනය කරන්නේ නම් සහ එය දෝෂයක් පෙන්වන්නේ නම්, පරීක්ෂණ කට්ටලය නැවත ධාවනය කිරීමෙන් දෝෂය නැවත ඇතිවීම සතුටක්!

එය දැන් වඩාත් පැහැදිලි වනු ඇතැයි මම බලාපොරොත්තු වෙමි.

අවසාන වශයෙන්, ඔබ මෙය භුක්ති වින්දා නම් අහඹු ලෙස හා ප්‍රේරණයන් යන මාතෘකාව පිළිබඳ වැඩිදුර කියවීමක් ඔබට ලැබෙනු ඇත:


20
හරි, පිරිමි ළමයි. දැනට අදහස් දැක්වීම ප්‍රමාණවත්. ඔබට මෙය තවදුරටත් සාකච්ඡා කිරීමට අවශ්‍ය නම්, ඔබම චැට් රූම් එකක් අල්ලා ගන්න, kthnxbye!
අයිවෝ ෆ්ලිප්ස්

1
@ එරික් නමුත් සෑම නව තට්ටුවකටම පෙර බීජ නැවත සකස් නොකෙරේ ද? එබැවින් අප නියැදි කරන්නේ සාපේක්ෂව සුළු ගමන් පථයක් පමණක් බව ඔබ නිවැරදියි , ඔබ මේ මොහොතේ ගමන් කරන ගමන් පථයේ කොතැනදැයි ඔබ හරියටම නොදනී.
ඒඑස්


ආශ්‍රිත ගැටළු සඳහා හොඳ (නමුත්) න) ප්‍රතිකාරයක් නූත්ගේ TAOCP 2 වන වෙළුමේ 3.5 වන වගන්තියේ “අහඹු අනුක්‍රමයක් යනු කුමක්ද?” (පි. 149), සමතුලිත, k- බෙදා හරින ලද සහ ∞- බෙදා හරින ලද අනුක්‍රමයන්හි දීප්තිමත් අර්ථ දැක්වීම් වලින් ආරම්භ වේ. ව්‍යාජ අනුපිළිවෙල 3.5.F හි සාකච්ඡා කෙරේ (පි. 170). සංකීර්ණ න්‍යායෙන් සහ ජර්මානු බීඑස්අයි වෙතින් ව්‍යාජ සන්නායකතාවයේ නිර්ණායක ද බලන්න .
ශ්‍රීවාට්සාර්

162

එරික් ලිපර්ට් පවසන පරිදි, එය බෙදා හැරීම පමණක් නොවේ. අහඹු බව මැනීමට වෙනත් ක්‍රම තිබේ.

මුල් සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්ර වලින් එකක් අවම වශයෙන් සැලකිය යුතු ප්‍රමාණයකින් අනුක්රමයක් ඇත - එය 0 සහ 1 න් ප්රත්යාවර්ත විය. එබැවින් එල්එස්බී 100% පුරෝකථනය කළ හැකි විය. නමුත් ඔබ ඊට වඩා කරදර විය යුතුය. සෑම බිට් එකක්ම අනපේක්ෂිත විය යුතුය.

ගැටලුව ගැන සිතීමට හොඳ ක්‍රමයක් මෙන්න. ඔබ අහඹු ලෙස බිටු 64 ක් ජනනය කරන බව කියමු. සෑම ප්‍රති result ලයක් සඳහාම, පළමු බිටු 32 (A) සහ අවසාන බිටු 32 (B) ගෙන x [A, B] අරාවකට දර්ශකයක් සාදන්න. දැන් පරීක්ෂණය මිලියනය වතාවක් සිදු කරන්න, එක් එක් ප්‍රති result ලය සඳහා එම අංකයට අරාව වැඩි කරන්න, එනම් X [A, B] ++;

දැන් 2D රූප සටහනක් අඳින්න, එහිදී විශාල සංඛ්‍යාව, එම ස්ථානයේ දීප්තිමත් පික්සෙල්.

එය සැබවින්ම අහඹු නම්, වර්ණය ඒකාකාර අළු විය යුතුය. නමුත් ඔබට රටා ලැබෙනු ඇත. වින්ඩෝස් එන්ටී පද්ධතියේ ටීසීපී අනුක්‍රමික අංකයේ ඇති “අහඹු බව” පිළිබඳ රූප සටහන උදාහරණයක් ලෙස ගන්න:

වින්ඩෝස් එන්ටී

හෝ මෙය වින්ඩෝස් 98 වෙතින්:

වින්ඩෝස් 98

සිස්කෝ රවුටරය (IOS) ක්‍රියාත්මක කිරීමේ අහඹු බව මෙන්න. සිස්කෝ අයිඑස්ඕ

මෙම රූප සටහන් මයිකල් සාලෙව්ස්කිගේ කඩදාසි අනුග්‍රහයෙනි . මෙම විශේෂිත අවස්ථාවෙහිදී, පද්ධතියක TCP අනුක්‍රමික අංකය කුමක් දැයි අනාවැකි කිව හැකි නම්, වෙනත් පද්ධතියකට සම්බන්ධතාවයක් ඇති කර ගැනීමේදී කෙනෙකුට එම පද්ධතිය මෙන් පෙනී සිටිය හැකිය - එමඟින් සම්බන්ධතා පැහැර ගැනීමට, සන්නිවේදනයට බාධා කිරීමට යනාදිය ඉඩ දෙනු ඇත. ඊළඟ අංකය 100% ක් පුරෝකථනය කළ නොහැක , අපගේ පාලනය යටතේ නව සම්බන්ධතාවයක් ඇති කිරීමට අපට හැකි නම්, අපට සාර්ථක වීමේ අවස්ථාව වැඩි කළ හැකිය. තත්පර කිහිපයකින් පරිගණක 100,000 ක් ජනනය කළ හැකි විට, සාර්ථක ප්‍රහාරයක අන්තරායන් තාරකා විද්‍යාවේ සිට හැකි හෝ බොහෝ දුරට ගමන් කරයි.


30
මෙය කෙතරම් දීප්තිමත් ද යත් එය මගේ දෑසට කඳුළු ගෙන එයි. සෑම මෙහෙයුම් පද්ධතියක් (ජංගම / ඩෙස්ක්ටොප් / සේවාදායකයක්) සහ වේදිකාවක් (ජේවීඑම් / ජාවාස්ක්‍රිප්ට් / යනාදිය) සඳහා මේවා නිර්මාණය කරන යෙදුමක් තිබිය යුතුය.
HDave

5
වින්ඩෝස් රැන්ඩ් () ක්‍රියාකාරිත්වය තරමක් හොඳයි! එය පැහැදිලි රටා නොමැති වලාකුළක් නිපදවයි. එය අත්හදා බැලීමට මගේ ක්‍රියාත්මක කිරීම බලන්න (සහ වෙනත් ඇල්ගොරිතම): github.com/Zalastax/visualize_random
Zalastax

94

පරිගණක මඟින් ජනනය කරන ලද ව්‍යාජ සංඛ්‍යා පරිගණක භාවිතා කරන්නන් මුහුණ දෙන බහුතරයක් සඳහා පිළිගත හැකි වුවද, සම්පූර්ණයෙන්ම අනපේක්ෂිත අහඹු සංඛ්‍යා අවශ්‍ය වන අවස්ථා තිබේ .

ගුප්තකේතනය වැනි ආරක්‍ෂිත සංවේදී යෙදුම් වලදී, ව්‍යාජ සංඛ්‍යා උත්පාදක යන්ත්‍රයක් (පීආර්එන්ජී) සාරධර්ම නිපදවිය හැකි අතර ඒවා අහඹු ලෙස පෙනුනද ඇත්ත වශයෙන්ම ප්‍රහාරකයා විසින් පුරෝකථනය කළ හැකිය. ගුප්තකේතන පද්ධතියක් බිඳ දැමීමට උත්සාහ කරන කෙනෙකුට පීආර්එන්ජී භාවිතා කර ගුප්තකේතන යතුරු අනුමාන කළ හැකි අතර ප්‍රහාරකයාට පීආර්එන්ජී හි තත්වය පිළිබඳ තොරතුරු තිබේ. එබැවින්, එවැනි යෙදුම් සඳහා, සැබවින්ම හඳුනාගත නොහැකි අගයන් නිපදවන අහඹු සංඛ්‍යා උත්පාදක යන්ත්‍රයක් අවශ්‍ය වේ. සමහර පීආර්එන්ජී නිර්මාණය කර ඇත්තේ ගුප්ත විද්‍යාත්මකව ආරක්‍ෂිත වන අතර එවැනි ආරක්‍ෂිත සංවේදී යෙදුම් සඳහා භාවිතා කළ හැකි බව සලකන්න .

ආර්එන්ජී ප්‍රහාර පිළිබඳ වැඩි විස්තර මෙම විකිපීඩියා ලිපියෙන් සොයාගත හැකිය .


9
ගුප්ත ලේඛන පීආර්එන්ජී පවතින අතර ඒවා බහුලව භාවිතා වේ. ඔවුන්ට ප්‍රමාණවත් ප්‍රමාණයේ බීජයකින් ප්‍රායෝගිකව අසීමිත සංඛ්‍යා අහඹු සංඛ්‍යාවක් ජනනය කළ හැකිය. එවැනි ප්‍රවාහයක් සත්‍ය සසම්භාවී සංඛ්‍යා වලින් වෙන්කර හඳුනා ගැනීම පරිගණකමය වශයෙන් කළ නොහැකි ය, එබැවින් එවැනි ප්‍රවාහයක කිසිදු කොටසකින් අමතර තොරතුරු ලබා ගත නොහැකි අතර ඕනෑම ප්‍රායෝගික අරමුණක් සඳහා සංඛ්‍යා සත්‍ය සසම්භාවී සංඛ්‍යා තරම් හොඳ ය.
aaaaaaaaaaa

මෙය පැහැදිලි කිරීමට ඇති පහසුම ක්‍රමය නම් අහඹු ලෙස සංඛ්‍යා උත්පාදක ඇල්ගොරිතම ක්‍රමලේඛනය කළ යුතු බවයි. ඒ කියන්නේ අනුගමනය කරන උපදෙස් මාලාවක් තිබෙනවා. උපදෙස් මාලාවක් තිබේ නම්, එය අහඹු විය නොහැක.
කෙල්ටාරි

6
@Keltari ඔබ ඉන්නේ එන්ට්රොපියේ අංගයක් අතුරුදහන් ... බොහෝ RNGs (අවම වශයෙන් ගුප්ත ෙල්ඛන අය දී) බාහිර මූලයන් (උදා: මූසිකය ව්යාපාරය) සහ භාවිත යෙදවුම් රැස් ආරම්භක තත්ත්වය කොටසක් ලෙස බව - ඒ අනුව, සිට පරිවර්තනය Aකිරීමට Bසැලසුම් කොට නමුත් A(තිබිය යුතු) ආරම්භක තත්වය අනුමාන කළ නොහැක. ලිනක්ස් විසින් /dev/randomඑන්ට්‍රොපිය කොපමණ ප්‍රමාණයක් තිබේදැයි දළ වශයෙන් තබා ගන්නා අතර එය අඩු වුවහොත් අංක ලබා දීම නවත්වනු ඇත.
මූලික

කුතුහලයෙන් - ලාවා ලාම්පු “සැබවින්ම අහඹු” ලෙස සලකන්නේ ඇයි? එය අනාවැකි කිව නොහැකි හැසිරීමක් පෙන්නුම් කරන බව මට වැටහී ඇත, නමුත් තරල ගතිකතාවයන් පිළිබඳ මනා අවබෝධයක් ඇති අයෙකුට සහ පෘථිවියේ ගුරුත්වාකර්ෂණ පරිසරය තුළ එම තරල අන්තර්ක්‍රියා කරන ආකාරය නිසැකවම “පුරෝකථනය කළ හැකි” ප්‍රති results ල ලබා දිය හැකිය, නැත? ලාවා ලාම්පු අනපේක්ෂිත ය, නමුත් මට නම් ඒවා අහඹු ලෙස නොව අනාවැකි කිව හැකි ය.
TheGreenCabbage

1
GtheGreenCabbage: ලාවා ලාම්පු අවුල් සහගත යැයි මම සැක කරමි. ප්‍රමාණවත් තරම් හොඳ පරිගණක ආකෘතියක් සහ ප්‍රමාණවත් සංඛ්‍යා නිරවද්‍යතාවයකින් ඔබට (ප්‍රතිපත්තිමය වශයෙන්) ටික වේලාවක් හැසිරීම පුරෝකථනය කළ හැකිය. එහෙත්, පද්ධතිය අවුල් සහගත බැවින්, ආරම්භක තත්වයන්හි ඉතා කුඩා වෙනසක් සහිත ලාවා ලාම්පු දෙකක් ඉක්මනින් හැසිරීමෙන් වෙනස් වේ. (මෙම ප්‍රකාශය අවුල් සහගත
ආකර්ෂකයන්

77

මම එය පයිතන් හි අත්හදා බැලුවෙමි: මෙන්න රෝල් මිලියන 60 ක ප්‍රති result ලය. ඉහළම විචලනය 0.15 වැනි ය. එය අහඹු ලෙස එය ලබා ගැනීමට යන්නේ නැද්ද?

ඇත්ත වශයෙන්ම, එය එතරම්ම "හොඳයි" එය නරකයි ... පවත්නා සියලු පිළිතුරු ආරම්භක අගයන්හි කුඩා අනුපිළිවෙලක් ලබා දී ඇති පුරෝකථනය කෙරෙහි අවධානය යොමු කරයි . මට තවත් ප්‍රශ්නයක් මතු කිරීමට අවශ්‍යයි:

    ඔබේ බෙදාහැරීම අහඹු රෝල් වලට වඩා කුඩා සම්මත අපගමනය ඇත

සැබෑ සසම්භාවිතාව පමණක් තරමක් එන්නේ නැහැ කියා "හරියටම පාහේ 1 එය තෝරා ගත හැකිය අංක ආකාරය මෙතෙක් ගණනාවක් පුරා" ඔබ ප්රමිතිය පිළිබඳව දර්ශකයක් ලෙස භාවිතා කරන්නේ බව සාමාන්ය ගණනය සමීප.

බහු ඩයිස් රෝල් සඳහා සම්භාවිතා බෙදාහැරීම් පිළිබඳ මෙම තොග හුවමාරු ප්‍රශ්නය දෙස බැලුවහොත් , එන් ඩයිස් රෝල්වල සම්මත අපගමනය සඳහා සූත්‍රයක් ඔබට පෙනෙනු ඇත (අව්‍යාජ අහඹු ප්‍රති come ල උපකල්පනය කරමින්):

 sqrt(N * 35.0 / 12.0).

එම සූත්‍රය භාවිතා කරමින්, මේ සඳහා සම්මත අපගමනය :

  • රෝල් මිලියනයක් 1708 කි
  • රෝල් මිලියන 60 ක් 13229 කි

අපි ඔබේ ප්‍රති results ල දෙස බැලුවහොත්:

  • රෝල් මිලියනයක්: stddev (1000066, 999666, 1001523, 999452, 999294, 999999) 804 යි
  • රෝල් මිලියන 60 ක්: stddev (9997653, 9997789, 9996853, 10006533, 10002774, 9998398) 3827

සීමිත නියැදියක සම්මත අපගමනය සූත්‍රයට හරියටම ගැලපෙනු ඇතැයි ඔබට අපේක්ෂා කළ නොහැක, නමුත් එය ඉතා සමීප විය යුතුය. එහෙත්, රෝල් මිලියනයක දී ඔබ නිසි ප්‍රමාණයෙන් අඩකටත් වඩා අඩුය, මිලියන 60 කින් ඔබ තුනෙන් එකකට යටත් වේ - එය නරක අතට හැරෙමින් තිබේ, එය අහම්බයක් නොවේ ....

ව්යාජ-ආර්එන්ජී විශේෂිත බීජ වලින් ආරම්භ වන අතර නිශ්චිත කාල පරිච්ඡේදයක් සඳහා මුල් අංකය නැවත බැලීම නොකෙරේ. උදාහරණයක් ලෙස, පැරණි සී පුස්තකාල rand()ශ්‍රිතය ක්‍රියාත්මක කිරීමේදී සාමාන්‍යයෙන් 2 ^ 32 කාල සීමාවක් ඇති අතර, ඔවුන් බීජ පුනරාවර්තනය වීමට පෙර හරියටම 0 සිට 2 ^ 32-1 අතර සෑම අංකයක්ම බලන්න. එබැවින්, ඔබ 2 ^ 32 ඩයිස් පෙර-මාපාංකය රෝල් කරයි නම් (%) ප්‍රති results ල වලට 0 සිට 2 ^ 32 දක්වා වූ සෑම සංඛ්‍යාවක්ම ඇතුළත් වන අතර, එක් එක් 1-6 ප්‍රති come ල සඳහා ගණනය කිරීම් 715827883 හෝ 715827882 (2 ^ 32 යනු 6 න් ගුණ කිරීමක් නොවේ) වන අතර සම්මත අපගමනය 0 ට වඩා සුළු වශයෙන් පමණි. ඉහත සූත්‍රය, රෝල් 2 ^ 32 සඳහා නිවැරදි සම්මත අපගමනය 111924 වේ. කෙසේ වෙතත්, ඔබේ ව්‍යාජ සසම්භාවී රෝල් ගණන වැඩි වන විට ඔබ 0 සම්මත අපගමනය දෙසට අභිසාරී වේ. රෝල් ගණන සැලකිය යුතු කාල පරිච්ඡේදයක් වන විට ගැටළුව වැදගත් වනු ඇතැයි අපේක්ෂා කළ හැකි නමුත් සමහර ව්‍යාජ-ආර්එන්ජී අනෙක් ඒවාට වඩා නරක ගැටළු - හෝ අඩු සාම්පල සමඟ පවා ගැටලු පෙන්නුම් කරයි.

එබැවින් ඔබ ගුප්ත ලේඛනකරණ අවදානම ගැන තැකීමක් නොකළත්, සමහර යෙදුම්වල ඕනෑවට වඩා, කෘතිමව ප්‍රති .ල නොමැති බෙදාහැරීම් තිබීම ගැන ඔබ සැලකිලිමත් විය හැකිය. තනි තනි අහඹු ප්‍රති s ලවල විශාල සාම්පල සමඟ ස්වාභාවිකව සිදුවන අසමාන ප්‍රති results ලවල ප්‍රතිවිපාක සකස් කිරීමට සමහර වර්ගවල අනුකරණයන් විශේෂයෙන් උත්සාහ කරයි , නමුත් සමහර pRNG හි ප්‍රති .ලවල ඒවා නිරූපණය නොවේ. කිසියම් සිදුවීමකට විශාල ජනගහනයක් ප්‍රතිචාර දක්වන ආකාරය අනුකරණය කිරීමට ඔබ උත්සාහ කරන්නේ නම්, මෙම ගැටළුව ඔබේ ප්‍රති results ල රැඩිකල් ලෙස වෙනස් කළ හැකිය .


නිශ්චිත උදාහරණයක් ලබා දීම සඳහා: ගණිත ian යෙක් පෝකර් මැෂින් ක්‍රමලේඛකයෙකුට පවසන්නේ රෝල් මිලියන 60 කට පසු - තිරය වටා කුඩා "විදුලි පහන්" සිය ගණනක් දැල්වීමට භාවිතා කරන බවයි, ගණිත ian යා අපේක්ෂා කරන සික්සර් 10,013,229 හෝ ඊට වැඩි ගණනක් තිබේ නම් 1 stddev මධ්යන්යයෙන් away ත්ව, කුඩා ගෙවීමක් තිබිය යුතුය. ඒක 68-95-99.7 පාලනය (විකිපීඩියා, නිදහස් විශ්වකෝෂය) මේ ගැන සිදු කල යුතු 16% කාලය (~ සම්මත අපගමනය / පමණක් අර්ධ පිටස්තර 68% වැටීම ඉහත වේ). ඔබගේ සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්රය සමඟ, මෙය මධ්යන්යයට වඩා 3.5 සිට සම්මත අපගමනයන්ගෙන් වේ: 0.025% අවස්ථාව යටතේ - කිසිදු පාරිභෝගිකයෙකුට පාහේ මෙම ප්රතිලාභ නොලැබේ. දැන් සඳහන් කර ඇති පිටුවේ ඉහළ අපගමනය වගුව බලන්න, විශේෂයෙන්:

| Range    | In range   | Outside range | Approx. freq. for daily event  |
| µ ± 1σ   | 0.68268... | 1 in 3        | Twice a week                   |
| µ ± 3.5σ | 0.99953... | 1 in 2149     | Every six years                |

ඔබ මෙහි ඇපල් හා දොඩම් සංසන්දනය කරයි. සම්මත අපගමනයන් දෙක එකිනෙකට පරම සම්බන්ධයක් නැත.
ජෙබු

51

මම මේ අහඹු සංඛ්‍යා උත්පාදක යන්ත්රය ලිව්වේ ඩයිස් රෝල් ජනනය කිරීම සඳහා ය

def get_generator():
  next = 1
  def generator():
    next += 1
    if next > 6:
      next = 1
    return next
  return generator

ඔබ එය මේ ආකාරයට භාවිතා කරයි

>> generator = get_generator()
>> generator()
1
>> generator()
2
>> generator()
3
>> generator()
4
>> generator()
5
>> generator()
6
>> generator()
1

ආදිය. මෙම උත්පාදක යන්ත්රය ඩයිස් ක්රීඩාවක් ක්රියාත්මක කළ වැඩසටහනක් සඳහා භාවිතා කිරීමට ඔබ සතුටු වේද? මතක තබා ගන්න, එහි ව්‍යාප්තිය හරියටම “සැබවින්ම අහඹු” උත්පාදක යන්ත්‍රයකින් ඔබ අපේක්ෂා කරන දෙයයි!

ව්‍යාජ සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්‍ර අවශ්‍යයෙන්ම එකම දේ කරයි - ඒවා නිවැරදි ව්‍යාප්තිය සමඟ පුරෝකථනය කළ හැකි සංඛ්‍යා ජනනය කරයි. ඉහත සරල අහඹු සංඛ්‍යා උත්පාදක යන්ත්රය නරක යැයි එකම හේතුව නිසා ඒවා නරක ය - නිවැරදි බෙදාහැරීම පමණක් නොව ඔබට අව්‍යාජ අනාවැකි කළ නොහැකි අවශ්ය අවස්ථාවන් සඳහා ඒවා සුදුසු නොවේ.


2
"ව්‍යාජ සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්ර ... නිවැරදි බෙදාහැරීම සමඟ පුරෝකථනය කළ හැකි සංඛ්යා ජනනය කරන්න" - එය PRNG එකක් නිසා එය පරිපූර්ණ බෙදාහැරීමක් ඇති බවට සහතික නොවේ (ඇත්ත වශයෙන්ම, වාණිජමය වශයෙන් විශාල වශයෙන් එසේ නොවේ. මෙම පිළිතුරු වල දක්වා ඇති හේතු). ප්‍රමාණවත් තොරතුරු ලබා දී ඇති විට ඒවා පුරෝකථනය කළ හැකි වුවද (භාවිතා කරන ඇල්ගෝ, ආරම්භක බීජ, ප්‍රතිදාන අගයන්, w / e), ඒවාට තවමත් විචල්‍යතාවයක් ඇත.
බ්‍රයන් එස්

3
කාරණය අමතරව, මම දන්නවා, ඒත් get_generator = lambda: itertools.cycle(range(1,7)), generator = get_generator(), next(generator) # and so onනෑ සඳහනක් කිරීමට පමණක් ද අලංකාර වේ :)
ජේනස් Troelsen

2
Rian බ්‍රයන්ස් ඇත්ත වශයෙන්ම, කාලයත් සමඟ බෙදා හැරීමේ පරීක්ෂණ අසමත් වූ PRNG එකක් අර්ථ දැක්වීම අනුව පුරෝකථනය කළ හැකිය. එබැවින් විශාල N ට වඩා වැඩි ගණනක්, ඔබ N කාසි පෙරළීම් වල N / 2 හිස් වලින් ටිකක් දුරක් ලබා ගන්නේ නම්, ඔබට හිස මත ඔට්ටු ඇල්ලීම ආරම්භ කළ හැකි අතර, ඔබට අහිමි වනවාට වඩා වැඩි ප්‍රමාණයක් දිනා ගත හැකිය. ඒ හා සමානව, ඔබට හිස් v වලිගවල පරිපූර්ණ ව්‍යාප්තියක් තිබේ නම්, නමුත් හිස් සෑම විටම යුගල වශයෙන් පැමිණියේ නම්, ඔබට නැවත ජයග්‍රහණය සඳහා වට්ටෝරුවක් තිබේ. බෙදා හැරීමේ පරීක්ෂණ යනු PRNG එකක් හොඳ යැයි ඔබ දන්නා ආකාරයයි.
ජෝන් කිපාර්ස්කි

1
ඔබට අමතක වුනා nonlocal next:-).
කොස්

5
ඊටත් වඩා හොඳ උදාහරණය: පයි සාමාන්‍ය යැයි විශ්වාස කෙරේ , එයින් අදහස් වන්නේ ඕනෑම පාදමක ඇති ඕනෑම දිගක ඉලක්කම් අනුක්‍රමයක් එම පාදමේ එම දිගෙහි වෙනත් අනුක්‍රමයකට වඩා බොහෝ විට නොපෙනෙන බවයි. ඉල්ලා විට, ඇල්ගොරිතමයක් n අහඹු බිටු, ඊළඟ ගනී n පයි සහ ප්රතිලාභ ඔවුන් බිටු ( "වංශය" බිට් ඔබ ආරම්භ වේ), දිගු කාලීන වශයෙන් ඉතා හොඳින් පවා බෙදාහැරීම නිපදවීමට යුතුය. නමුත් ඔබේ උත්පාදක යන්ත්රය සඳහා ඔබට තවමත් එය අවශ්ය නොවේ - ඔබ විසින් ජනනය කරන ලද අවසාන බිටු පොකුර දන්නා කෙනෙකුට අනුක්රමය සිදු වූ පළමු අවස්ථාව සොයාගත හැකිය, ඔබේ බීජය එහි ඇතැයි උපකල්පනය කර නිවැරදි විය හැකිය.
cpast

27

ඔබේ පරිගණකයට කළ හැකි අහඹු සංඛ්‍යා උත්පාදනය බොහෝ අවශ්‍යතා සඳහා සුදුසු වන අතර ඔබට සැබවින්ම අහඹු අංකයක් අවශ්‍ය කාලයක් හමු නොවනු ඇත.

සත්‍ය අහඹු සංඛ්‍යා උත්පාදනයට එහි අරමුණු ඇත. පරිගණක ආරක්ෂාව, සූදුව, විශාල සංඛ්‍යාන නියැදි ආදිය.

අහඹු සංඛ්‍යා යෙදීම් ගැන ඔබ උනන්දු නම් විකිපීඩියා ලිපිය බලන්න .


12
විශාල ගැටළුව වන්නේ ආරක්ෂක හේතූන් මත ප්‍රහාරකයාට අනාවැකි කිව නොහැකි අහඹු සංඛ්‍යා ඔබට අවශ්‍ය වූ විටය.
ඩේවිඩ් ෂ්වාට්ස්

16
ඔබට සැබවින්ම අහඹු අංකයක් අවශ්‍ය වන කාල පරිච්ඡේදයක් නිරයට පැමිණෙනු ඇතැයි ඔබට විශ්වාසයි. ආරම්භ වන වෙබ් පිටුවක් විවෘත කිරීමට එය ප්‍රමාණවත් https://...
Jan Hudec

3
An ජන්හුඩෙක්: හොඳයි, දෛනික භාවිතයේදී, ඔබ ඕනෑම වැඩසටහනක් විවෘත කළ මොහොතේම, ඔබ ලිපින තීරුවකට ටයිප් කිරීමට පෙර ආරක්ෂිත අහඹු අංක අවශ්‍ය වේ: ලිපින අවකාශ සැකැස්ම සසම්භාවීකරණය බලන්න . ඒ නිසා තමයි මේ වගේ දේවල් වෙන්නේ.
රීඩ්

5
An ජන්හුඩෙක් මම විශේෂයෙන් කතා කළේ ඔබට සබැඳි සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්‍රයක් භාවිතා කිරීමට අවශ්‍ය වනු ඇති බවයි. සත්‍ය සසම්භාවී සංඛ්‍යා නිතර භාවිතා වන නමුත් ඇත්ත වශයෙන්ම ඒවා ජනනය කිරීමට අවශ්‍ය වන්නේ ඉතා සුළු පිරිසකි.
ඇලෙක්ස් මැකෙන්සි

2
තව් යන්ත්‍ර ද TRNG නොව PRNG භාවිතා කරයි. උත්පාදක යන්ත්රය සෑම විටම ක්රියාත්මක වන අතර භ්රමණය වන බොත්තම තල්ලු කරන නිශ්චිත වේලාවට අංකයක් තෝරා ගනු ලැබේ. PRNG හි එකතුව සහ සැබවින්ම අහඹු බොත්තම එබීමේ කාලය TRNG ට සමාන වේ.
රොජර් ඩෝල්

27

බොහෝ ක්‍රමලේඛන භාෂාවල සාමාන්‍ය ශ්‍රිත මගින් ජනනය කරන අහඹු සංඛ්‍යා තනිකරම අහඹු සංඛ්‍යා නොවේ. ඒවා ව්‍යාජ අහඹු සංඛ්‍යා වේ. ඒවා තනිකරම අහඹු සංඛ්‍යා නොවන බැවින් කලින් ජනනය කරන ලද සංඛ්‍යා පිළිබඳ ප්‍රමාණවත් තොරතුරු සමඟ ඒවා අනුමාන කළ හැකිය. එබැවින් මෙය අ ගුප්ත විද්‍යාවේ ආරක්ෂාව සඳහා ව්‍යසනයක් .

උදාහරණයක් ලෙස පහත දැක්වෙන අහඹු සංඛ්‍යා උත්පාදක ශ්‍රිතය භාවිතා glibcකරන්නේ තනිකරම අහඹු සංඛ්‍යාවක් නොවේ. මෙයින් ජනනය වන ව්‍යාජ අහඹු අංකය අනුමාන කළ හැකිය. එය ආරක්ෂක ගැටළු සඳහා වන වරදකි. මෙය විනාශකාරී බවට ඉතිහාසයක් ඇත. ගුප්ත ලේඛනකරණයේදී මෙය භාවිතා නොකළ යුතුය.

glibc random():
    r[i] ← ( r[i-3] + r[i-31] )  % (2^32)
    output  r[i] >> 1

සංඛ්‍යානමය වශයෙන් බෙහෙවින් වැදගත් වුවද මෙම වර්ගයේ ව්‍යාජ සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්රය කිසි විටෙකත් ආරක්ෂක සංවේදී ස්ථානවල භාවිතා නොකළ යුතුය.

ව්‍යාජ සසම්භාවී යතුරට එල්ල වූ ප්‍රසිද්ධ ප්‍රහාරවලින් එකක් වන්නේ 802.11b WEP වෙත පහර දීමයි . WEP සතුව බිට් 104 යතුරක් ඇති අතර එය බිට් 128 යතුර සෑදීම සඳහා 24-බිට් IV (කවුන්ටරය) සමඟ සමපාත වන අතර එය ව්‍යාජ සසම්භාවී යතුරක් ජනනය කිරීම සඳහා RC4 ඇල්ගොරිතමයට අදාළ වේ .

( RC4( IV + Key ) ) XOR (message)

යතුරු එකිනෙකා සමඟ සමීපව සම්බන්ධ විය. මෙහිදී, එක් එක් පියවරේදී IV පමණක් 1 කින් වැඩි වූ අතර අනෙක් සියල්ලම එක හා සමාන විය. මෙය තනිකරම අහඹු නොවන බැවින් එය විනාශකාරී වූ අතර පහසුවෙන් බිඳ දැමිය. රාමු 40000 ක් පමණ විශ්ලේෂණය කිරීමෙන් යතුර නැවත ලබා ගත හැකි අතර එය මිනිත්තු ගණනකි. WEP හුදෙක් අහඹු ලෙස 24-බිට් IV භාවිතා කළේ නම්, රාමු 2 ^ 24 (මිලියන 16.8 කට ආසන්න) තෙක් එය ආරක්ෂිත විය හැකිය.

එබැවින් හැකි සෑම විටම ආරක්ෂක සංවේදී ගැටළු වලදී පිරිසිදු අහඹු සංඛ්‍යා උත්පාදක යන්ත්රයක් සමඟ යා යුතුය.


3
දුර්වල කේතාංකයක් භාවිතා කරමින් නරක ලෙස නිර්මාණය කරන ලද ප්‍රොටෝකෝලයක් මත මම WEP දේවල් දොස් පවරමි. නවීන ධාරා කේතාංක සමඟ ඔබට කවුන්ටරයක් ​​IV ලෙස භාවිතා කළ හැකිය.
CodesInChaos

2
WEP හි ඇති ප්‍රධාන ගැටළුව වූයේ රාමු 2 ^ 24 (මිලියන 16 කට ආසන්න) යතුර පුනරාවර්තනය කිරීමයි. අදාළ යතුරු සමඟ එය ඊටත් වඩා භයානක වූ අතර එමඟින් රාමු 40000 ක පමණ කේතය බිඳ දැමිය හැකි විය. මෙහි ඇති ප්‍රධාන කරුණ නම් යතුර අහඹු නොවන බවයි. එය සමීපව සම්බන්ධ වන බැවින් එය ඉරිතැලීමට පහසුය.
ප්‍රභා

1
ගුප්ත ලේඛනකරණයේ ව්‍යාජ සසම්භාවී භාවය නරක වන්නේ ගුප්ත ලේඛන යතුරු ජනනය කිරීමේදී පමණි . ඉන් ඔබ්බට එය කදිමයි. ඇත්ත වශයෙන්ම, RC4 යනු ව්‍යාජ සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්‍රයකට වඩා ටිකක් වැඩි ය. එය XORed යතුරේ බිටු 128 ක ව්‍යාප්තිය සමඟ පණිවුඩයේ සරල පෙළට ඇතුළත් වේ.
මතෙ

13

වෙනස වන්නේ සත්‍ය සසම්භාවී සංඛ්‍යා නොමැති කාලයකට පසු ව්‍යාජ ජනනය කළ සංඛ්‍යා පුරෝකථනය කළ හැකි (පුනරාවර්තනය) වීමයි. පුනරාවර්තනය කිරීමට ගතවන දිග රඳා පවතින්නේ එහි පරම්පරාව සඳහා භාවිතා කරන බීජයේ දිග මත ය.

මෙන්න එම මාතෘකාව පිළිබඳ ලස්සන වීඩියෝවක්: http://www.youtube.com/watch?v=itaMNuWLzJo


පුරෝකථනය කිරීමේ හැකියාව! = නැවත නැවත කිරීම. මර්සෙන් ට්විටර් ඊට හොඳ නිදසුනකි. 624 Int32 න් පසු බොහෝ ක්‍රියාත්මක කිරීමේදී ඔබට ඊළඟ අංක සියල්ලම පුරෝකථනය කළ හැකිය, නමුත් මර්සෙන් ට්විටර් අනුක්‍රමය ඊට වඩා දිගු වේ (2 ^ 19937 - 1).
HoLyVieR

අවම වශයෙන් අර්ධ වශයෙන් මෙම ප්‍රශ්නයට නිවැරදි හා සංක්ෂිප්ත පිළිතුර මෙය බව මට පෙනෙන පරිදි මෙම පිළිතුර තොගය ඉහළට තල්ලු නොකරන්නේ මන්දැයි මට තේරෙන්නේ නැත. ව්‍යාජ සසම්භාවී සංඛ්‍යා සමහර දිනුම් ඇදීමෙන් පසුව පහසුවෙන් පුරෝකථනය කළ හැකිය, ව්‍යාජ අහඹු ඇල්ගොරිතම “ගුණාත්මකභාවය” සමඟ දිනුම් ඇදීම් ගණන වෙනස් වේ. “හොඳ” ඇල්ගොරිතමයක් තෝරා ගැනීම අංශ දෙස බලයි: 1. සෑම අගයක්ම සමාන සංඛ්‍යාතයකින් (බෙදා හැරීම) ඇද ගනු ලැබේ, 2. ආරම්භයේ අනුක්‍රමය නැවත ආරම්භ කර “එකම සංඛ්‍යා නැවත ඇඳීම ආරම්භ කිරීමට“ දිගු කාලයක් ”ගත වේ. එකම අනුපිළිවෙල.
මිනිත්තු

"සත්‍ය අහඹු සංඛ්‍යා [පුරෝකථනය කළ නොහැකි]". අද මෙය සත්‍යයකි. දැන් අපි මහා පිපිරුම් න්‍යාය විශ්වාස කරන්නේ නම් සහ භෞතික විද්‍යාව මත පදනම්ව බීබී පසු ඕනෑම වේලාවක විශ්වයේ තත්වය ගණනය කිරීමට අපට විශාල බලයක් තිබේ නම් ... අපට අනාගතය ගැන අනාවැකි කීමට හැකිය. මම මේ ලියන්නේ ඉතා නිවැරදිව. හරිද?
මිනිත්තු

එය උපකල්පිත සත්‍යයකි, කෙසේ වෙතත්, සැබෑ වස්තූන්ගේ සත්‍ය ක්‍රියාවන්ට සම්බන්ධ වන එන්ට්‍රොපි ප්‍රමාණය සැලකිල්ලට ගත් විට, අවශ්‍ය පරිගණක බලය හාස්‍යජනක ලෙස විශාල වනු ඇත. පරිගණක වලින් ආවරණය වී ඇති මහාද්වීප ගැන සිතන්න. ප්ලස්, පෙර තත්වය මත යැපීම නිසා, විශ්වයේ සෑම මොහොතකම විශ්වයේ සෑම
ශරීරයකම තත්වය

පරිසරවේදී - ආ! "පරිගණකවල ආවරණය වන මහද්වීප" ... එය "හිච්හිකර්ගේ ගැලැක්සියට මඟපෙන්වීම" යනු කුමක් ද? ;-)
ysap

11

ව්‍යාජ සසම්භාවී අංකයක් ජනනය කිරීමට පෙර ඕනෑම කෙනෙකුට අනුමාන කළ හැකි යැයි උපකල්පනය කරන්න.

සුළු යෙදුම් සඳහා ව්‍යාජ අහඹු බවක් හොඳයි, ඔබේ උදාහරණය මෙන්, ඔබට සුළු විචල්‍යතාවයකින් ආසන්න වශයෙන් නිවැරදි ප්‍රතිශතය (සමස්ත ප්‍රති result ල කට්ටලයෙන් 1/6 ක් පමණ) ලැබෙනු ඇත (ඔබ ඩයිස් 600k රෝල් කළහොත් ඔබ දකිනු ඇත වාර);

කෙසේ වෙතත්, පරිගණක ආරක්ෂාව වැනි දේ සම්බන්ධයෙන් ගත් විට; සත්‍ය අහඹු බව අවශ්‍ය වේ.

උදාහරණයක් ලෙස RSA ඇල්ගොරිතම ආරම්භ වන්නේ පරිගණකය අහඹු සංඛ්‍යා දෙකක් (P සහ Q) තෝරාගෙන ඔබේ පොදු සහ පෞද්ගලික යතුරු ලෙස හඳුන්වන විශේෂ සංඛ්‍යා උත්පාදනය කිරීම සඳහා එම අංකවලට පියවර කිහිපයක් කිරීමෙනි. (පුද්ගලික යතුරක වැදගත් කොටස එය පුද්ගලිකයි, වෙන කිසිවෙකු එය දන්නේ නැත!)

ඔබේ පරිගණකය තෝරා ගැනීමට යන 'අහඹු' අංක දෙක කුමක්දැයි ප්‍රහාරකයෙකුට දැනගත හැකි නම්, ඔබේ පුද්ගලික යතුර ගණනය කිරීම සඳහා ඔවුන්ට එකම පියවර ගත හැකිය (වෙන කිසිවෙකු දැනගත යුතු එකක් නොවේ!)

ඔබේ පුද්ගලික යතුර සමඟ ප්‍රහාරකයෙකුට කළ හැකි දේ කළ හැකිය. අ) ඔබ මෙන් මවාපාමින් ඔබේ බැංකුව සමඟ කතා කරන්න, ආ) ඔබේ 'ආරක්ෂිත' අන්තර්ජාල ගමනාගමනයට සවන් දී එය විකේතනය කිරීමට හැකි වනු ඇත, ඇ) ඔබ සහ අන්තර්ජාලයේ වෙනත් පාර්ශවයන් අතර වෙස් මුහුණු.

සත්‍ය අහඹු බව (එනම් අනුමාන කිරීමට / ගණනය කිරීමට නොහැකි වීම) අවශ්‍ය වන්නේ එතැනිනි.


11

මා භාවිතා කළ පළමු අහඹු අංකයට අඛණ්ඩව ඕනෑම අහඹු සංඛ්‍යා දෙකක විශිෂ්ට දේපලක් තිබුනි, දෙවැන්න 0.6 සම්භාවිතාවයකින් විශාල විය. 0.5 නොවේ. තෙවනුව සම්භාවිතාව 0.6 සමඟ තත්පරයට වඩා විශාල විය, සහ එසේ ය. එය අනුකරණයකින් විනාශයක් සිදු කරන්නේ කෙසේදැයි ඔබට සිතාගත හැකිය.

අහඹු සංඛ්‍යා සමානව බෙදා හැරීමත් සමඟ මෙය කළ හැකි යැයි සමහර අය මාව විශ්වාස නොකරති, නමුත් ඔබ අනුක්‍රමය දෙස බැලුවහොත් එය පැහැදිලිවම කළ හැකිය (1, 3, 5, 2, 4, 1, 3, 5, 2, 4, ...) සංඛ්‍යා දෙකෙන් දෙවැන්න සම්භාවිතාව 0.6 සමඟ විශාල වේ.

අනෙක් අතට, සමාකරණ සඳහා අහඹු සංඛ්‍යා ප්‍රතිනිෂ්පාදනය කිරීමට හැකි වීම වැදගත් විය හැකිය. ඔබ රථවාහන අනුකරණයක් කරන බවත්, ඔබ ගන්නා සමහර ක්‍රියාමාර්ග තදබදය වැඩි දියුණු කරන්නේ කෙසේදැයි සොයා ගැනීමට අවශ්‍ය බවත් කියමු. එවැනි අවස්ථාවකදී, ඔබ තදබදය වැඩි දියුණු කිරීමට උත්සාහ කළ විවිධ ක්‍රියාමාර්ග සමඟ එකම ගමනාගමන දත්ත (නගරයකට ඇතුළු වීමට උත්සාහ කරන පුද්ගලයින් වැනි) නැවත නිර්මාණය කිරීමට ඔබට අවශ්‍යය.


9

කෙටි පිළිතුර සාමාන්‍යයෙන් එයයි මිනිසුන්ට “සැබෑ අහඹු ” අවශ්‍ය වන්නේ නරක හේතුවක් නිසාය, එනම් ඔවුන්ට ගුප්ත විද්‍යාව පිළිබඳ අවබෝධයක් නොමැති වීමයි.

ප්‍රවාහ කේතාංක සහ සීඑස්පීආර්එන්ජී වැනි ගුප්ත ලේඛනගත ප්‍රාථමිකයන් භාවිතා කරන්නේ අනපේක්ෂිත බිටු කිහිපයක් පෝෂණය කිරීමෙන් පසු අනපේක්ෂිත බිටු විශාල නිපදවීමට ය.

ප්‍රවේශම්කාරී පා er කයාට දැන් මෙහි ඇරඹුම් ප්‍රශ්නයක් ඇති බව වැටහෙනු ඇත: ඒ සියල්ල ආරම්භ කිරීම සඳහා අපි එන්ට්‍රොපි බිටු කිහිපයක් එකතු කළ යුතුය. එවිට ඔවුන්ට සීඑස්පීආර්එන්ජී වෙත පෝෂණය කළ හැකි අතර එමඟින් අපට අවශ්‍ය සියලු අනපේක්ෂිත බිටු සතුටින් ලබා දෙනු ඇත. මේ අනුව දෘඩාංග RNG වූ CSPRNG බීජ අවශ්ය වේ . සත්‍යයෙන් එන්ට්‍රොපි අවශ්‍ය වන එකම අවස්ථාව මෙයයි.

(මම හිතන්නේ මෙය ආරක්ෂක හෝ ගුප්ත ලේඛනකරණයේ පළ කළ යුතුව තිබුණි.)

සංස්කරණය කරන්න: අවසානයේදී, යමෙකු අහඹු සංඛ්‍යා උත්පාදක යන්ත්‍රයක් තෝරා ගත යුතු අතර එය අපේක්ෂා කළ කාර්යයට ප්‍රමාණවත් වන අතර අහඹු සංඛ්‍යා උත්පාදනය සම්බන්ධයෙන් ගත් කල, දෘඩාංග අනිවාර්යයෙන්ම හොඳට සමාන නොවේ. නරක PRNGs මෙන්ම, දෘඩාංග අහඹු ප්‍රභවයන් සාමාන්‍යයෙන් පක්ෂග්‍රාහී වේ.

සංස්කරණය කරන්න: මෙහි සිටින සමහර පුද්ගලයින් තර්ජනාත්මක ආකෘතියක් උපකල්පනය කරන අතර ප්‍රහාරකයාට සීඑස්පීආර්එන්ජී හි අභ්‍යන්තර තත්වය කියවිය හැකි අතර එතැන් සිට සීඑස්පීආර්එන්ජී ආරක්ෂිත විසඳුමක් නොවන බව නිගමනය කරයි. මෙය දුර්වල නූල් ආකෘතිකරණයට උදාහරණයකි. ප්‍රහාරකයකුට ඔබේ පද්ධතිය අයිති නම්, ක්‍රීඩාව අවසන්, සරල හා සරල ය. මෙම අවස්ථාවේදී ඔබ TRNG හෝ CSPRNG භාවිතා කළත් එයින් කිසිදු වෙනසක් සිදු නොවේ.

සංස්කරණය කරන්න: ඉතින්, මේ සියල්ල සාරාංශ කිරීමට ... සීඑස්පීආර්එන්ජී බීජයක් එන්ට්‍රොපි අවශ්‍ය වේ. මෙය සිදු කිරීමෙන් පසු, සීඑස්පීආර්එන්ජී විසින් ආරක්ෂක යෙදුම් සඳහා අපට අවශ්‍ය අනපේක්ෂිත බිටු අපට එන්ට්‍රොපිය එකතු කිරීමට වඩා වේගයෙන් ලබා දෙනු ඇත. අනුකරණය කිරීම වැනි අනාවැකි නොකිරීමේ අවශ්‍යතාවයක් නොමැති නම්, මර්සෙන් ට්විටර් විසින් වඩා හොඳ අනුපාතයකින් හොඳ සංඛ්‍යානමය ගුණාංග සහිත සංඛ්‍යා ලබා දෙනු ඇත.

සංස්කරණය කරන්න: ආරක්ෂිත අහඹු සංඛ්‍යා උත්පාදනය පිළිබඳ ගැටළුව තේරුම් ගැනීමට කැමති ඕනෑම අයෙකු මෙය කියවිය යුතුය: http://www.cigital.com/whitepapers/dl/The_Importance_of_Reliable_Randomness.pdf


2
එය අනිවාර්යයෙන්ම ආරක්ෂක ප්‍රශ්නයක් නොවේ. ආරක්ෂාව සම්බන්ධ නොවන සැබවින්ම අහඹු සංඛ්‍යා භාවිතා කිරීමට හේතු ඇති බව මම සිතමි. මම අහඹු සංඛ්‍යා මත රඳා පවතින විද්‍යාත්මක පර්යේෂණයක් කරමින් සිටියේ නම් සහ එම සංඛ්‍යා හැකිතාක් අහඹු ලෙස තිබීම තීරණාත්මක නම්, මම නිසැකවම දෘඩාංග RNG එකක වාසිය ලබා ගන්නෙමි. ආර්.එන්.ජී.
කෙෆ් ෂෙක්ටර්

3
EffKefSchecter එය ඔවුන්ගේ ඇසෙන දෘඩාංග PRNG වලට සාමාන්‍යයෙන් පක්ෂග්‍රාහී සහ / හෝ සහසම්බන්ධිත ප්‍රතිදානයක් ඇත. එය ඒකාකාර ස්වාධීන නිමැවුමක් බවට පත් කිරීම සඳහා ඔවුන්ට පශ්චාත් සැකසුම් පියවරක් අවශ්‍ය වේ. මෙම පශ්චාත් සැකසුම් පියවර නවීන ධාරා කේතාංකයකට වඩා විශ්වාසදායක යැයි විශ්වාස කිරීමට හේතුවක් නැත. මම නිසැකවම ධාරා කේතාංකය විශ්වාස කරමි. අතිරේක ප්‍රසාද දීමනාවක් ලෙස එය ප්‍රජනනය කළ හැකි අතර එය විද්‍යාවේ වටිනාකමක් ඇත.
කෝඩ්ස්ඉන්චෝස්

හරි, ප්‍රමාණවත්. නමුත් ගුප්ත ලේඛන යෙදුම් සඳහා සමානවම අදාළ නොවේද? CSPRNG වැපිරීමට ඔබට දෘඩාංග RNG අවශ්‍ය බව මෙහි ඇති gievn පිළිතුර පවා පවසයි.
කෙෆ් ෂෙක්ටර්

2
@KefSchecter ඔව්, සීඑස්පීආර්එන්ජී වැපිරීමට ක්‍රිප්ටෝ යෙදුම්වලට සත්‍ය අහඹු සංඛ්‍යා අවශ්‍ය වේ. නමුත් අනෙක් සියල්ල සඳහා අපට එම CSPRNG භාවිතා කළ හැකිය.
CodesInChaos

EffKefSchecter: ගුප්ත ලේඛන යෙදීම් වලට අනුව ප්‍රවාහය ලෝකය විශාල වශයෙන් ප්‍රතිනිෂ්පාදනය නොකළ යුතුය. ඊට හාත්පසින්ම වෙනස්ව, විද්‍යාත්මක යෙදීම්වල දී, යමෙකු භාවිතා කරන “අහඹු” සංඛ්‍යා හුදෙක් කෙනෙකුගේ විශ්ලේෂණය හොඳ ආලෝකයකින් පෙන්වීමට තෝරාගෙන නොමැති බව පෙන්වීමට හැකිවීම උපකාරී වේ. නිදසුනක් වශයෙන්, ඊළඟ දවසේ රාජ්ය ලොතරැයි අංක භාවිතා කරමින් එක්තරා ආකාරයකින් දත්ත ජනනය කරන බවට යමෙකුගේ ක්රමවේදයන් ප්රකාශ කිරීමෙන් පසු නිවේදනය කරන්නේ නම්, සතියේ දින චිත්රයේ දුසිම් කිහිපයක් පමණක් තිබුණත් යමෙකුගේ ප්රති results ල වංචා කර නොමැති බව පා readers කයන්ට තරමක් විශ්වාස කළ හැකිය. එන්ට්‍රොපි බිටු.
supercat

8

සියලුම PRNGs සියලු භාවිත සඳහා සුදුසු නොවේ. උදාහරණයක් ලෙස, Java.util.SecureRandom විසින් SHA1 හෑෂ් භාවිතා කරයි, එහි නිමැවුම් ප්‍රමාණය බිටු 160 කි. එයින් අදහස් කරන්නේ අහඹු සංඛ්‍යා 2 160 ක් එයින් පැමිණිය හැකි බවයි. ඒ තරම් සරළයි. අභ්‍යන්තර තත්වයේ අගයන් 2 160 ට වඩා ලබා ගත නොහැක . මේ අනුව , ඔබේ බීජය පැමිණියේ කොතැනින් වුවත්, එක් බීජයකින් ඔබට අහඹු සංඛ්‍යා 2 160 කට වඩා ලබා ගත නොහැක . වින්ඩෝස් ක්‍රිප්ට්ජෙන් රැන්ඩම් බයිට් 40 ක තත්වයක් භාවිතා කරනු ඇතැයි විශ්වාස කෙරේ, එයට අහඹු සංඛ්‍යා 2 320 ධාරාවක් ඇත.

කාඩ්පත් 52 ක තට්ටුවක් මාරු කිරීමේ ක්‍රම 52!, එය ආසන්න වශයෙන් 2 226 කි. මේ අනුව, බීජ පැළ කිරීම නොසලකා ඔබට කාඩ්පත් තට්ටුවක් මාරු කිරීමට Java.util.SecureRandom භාවිතා කළ නොහැක. එය නිපදවිය නොහැකි දළ වශයෙන් 2 66 මාරු කිරීම් තිබේ. ඇත්ත වශයෙන්ම, ඔවුන් කවුරුන්දැයි අපි නොදනිමු ...

එබැවින්, මට සසම්භාවී බිටු 256 ක ප්‍රභවයක් තිබේ නම් (උදා: ක්වාන්ටිස් ආර්එන්ජී කාඩ්පතකින්), මට එම බීජය සමඟ ක්‍රිප්ට්ජෙන් රැන්ඩම් () වැනි පීආර්එන්ජී බීජයක් බීජ කර, පසුව පීආර්එන්ජී භාවිතා කර තට්ටුවක් මාරු කිරීමට කාඩ්පත්. මම සෑම අහඹු සිදුවීමකටම සමාන නම්, මෙය හොඳ වනු ඇත: අනපේක්ෂිත හා සංඛ්‍යානමය අහඹු. මම Java.util.SecureRandom සමඟ එකම දේ කළා නම්, නිෂ්පාදනය කළ නොහැකි මාර්‍ගයන් ඇති වනු ඇත, මන්ද එය එන්ට්‍රොපි බිටු 256 ක් සමඟ බීජ කළ නොහැකි අතර එහි අභ්‍යන්තර තත්වයට හැකි සියලු වෙනස්වීම් නියෝජනය කළ නොහැක.

Java.util.SecureRandom ප්‍රති results ල අනපේක්ෂිත හා සංඛ්‍යානමය අහඹු බව සලකන්න. සංඛ්‍යාලේඛන පරීක්ෂණයකින් කිසි විටෙකත් ගැටලුවක් හඳුනාගත නොහැක! කාඩ්පත් තට්ටුවක් අනුකරණය කිරීම සඳහා අවශ්‍ය සියලු නිමැවුම් වල සම්පූර්ණ වසම ආවරණය කිරීමට RNG හි ප්‍රතිදානය ප්‍රමාණවත් නොවේ.

මතක තබා ගන්න, ඔබ විහිළුකරුවන් එකතු කළහොත් එය 54 කි! ඔබ ආවරණය කළ යුතු, ඒ සඳහා 2 238 ක් පමණ අවශ්‍ය වේ .


2
සමහර වෙනස්වීම් සිදුවිය නොහැකි යැයි ඔබ සිතන්නේ ඇයි? එම තහනමට සැලකිය යුතු බලපෑමක් නැත.
CodesInChaos

2
මම ප්‍රශ්නයට ගොදුරු වී සිටිමි. දැඩි ලෙස නියාමනය කරන ලද සූදු සමාගම් සඳහා, එවැනි නැඹුරුවක් ගණිතමය වශයෙන් ඔප්පු කරනුයේ කාඩ්පත් කඩදාසි තට්ටුවකට වඩා කාඩ් ක්‍රීඩාව ජයග්‍රහණය කිරීමේ අවස්ථාව පරිගණකය සමඟ වෙනස් බවය. අවස්ථාවන් වඩා හොඳද නරකද යන්න ගැටළුවක් නොවේ. ඒවා වෙනස්. පරිගණකය සදාචාරාත්මකව සැබෑ තට්ටුවකට සමාන නොවේ. එපමණක් නොව අපට වෙනස සංලක්ෂිත කළ නොහැක. දැඩි නියාමන දඩයකට මුහුණ දෙන සූදු සමාගම බොහෝ සෙයින් සැලකිලිමත් වනු ඇත.
පැකෝ හෝප්

1
නමුත් එය හඳුනාගත හැකිය. දන්නා ක්‍රියාවලියක් භාවිතයෙන් මම එය හඳුනා ගතිමි: ප්‍රභව කේත සමාලෝචනය සහ ගැටළු වසම පිළිබඳ දැනුම. එය විශිෂ්ටයි. මට ස්වයංක්‍රීය සංඛ්‍යානමය විශ්ලේෂණයක් භාවිතා කළ නොහැක. එය java.util.Random හෝ Mersenne Twister භාවිතා කරන කෙනෙකු මෙන් හඳුනාගත හැකිය. සංඛ්‍යාන විශ්ලේෂණය RNG / ගැටළු වසම් නොගැලපීම සඳහා ඇති එකම වලංගු හඳුනාගැනීමේ යාන්ත්‍රණය නොවේ. එම අනාවරකය පසු කරන අසමත් වීම අර්ථ දැක්වීම අනුව සාර්ථක නොවේ.
පැකෝ හෝප්

1
මම කිසි විටෙකත් එම ප්‍රකාශයට එකඟ නොවෙමි. මා පැවසූ දෙය නම්, සංඛ්‍යාලේඛන විශ්ලේෂණය RNG / PRNG නිවැරදි බවට වැරදිසහගත සාක්ෂි නොවන බවයි. මෙය ව්‍යාජ .ණාත්මක උදාහරණයකි. එය වැරදියි, නමුත් සංඛ්යානමය නිමැවුම් පරීක්ෂණය එය සමත් වනු ඇත. මම SHA1 (1), SHA1 (2), SHA1 (3) ... SHA1 (n) මගේ "RNG" ලෙස භාවිතා කරන්නේ නම් එය සංඛ්‍යානමය පරීක්ෂණ ද සමත් වනු ඇත. එය ද වැරදිය. නිවැරදි අර්ථ දැක්වීම "සංඛ්‍යානමය පරීක්ෂණ සමත් වීම" යන්නෙන් ඔබ්බට විහිදේ. සංඛ්යානමය පරීක්ෂණ සමත් වීම අවශ්ය නමුත් ප්රමාණවත් නොවේ.
පැකෝ හෝප්

4
OdesCodesInChaos: “අයිආර්එල්-මාරුවීම්වලින් බහුතරයක් කිසි විටෙකත් නිපදවනු නොලැබේ යන වාසිය ලබා ගත හැකි ප්‍රහාරයක් ගැන අපි නොදනිමු” යන තර්කය මගින් එවැනි ප්‍රහාරයක් කළ නොහැකි යැයි ඇඟවෙන්නේ නැත. එය කුමක්දැයි හෝ එයට එරෙහිව ආරක්ෂා වන්නේ කෙසේදැයි නොදනී. එම අවස්ථාවේ දී නිවැරදි ආකල්පය වන්නේ තත්වය ඉවත් කිරීමෙන් පහර දීමේ හැකියාව තුරන් කිරීමයි: හැකි සෑම තට්ටුවක්ම ජනනය කළ හැකි තරම් ගුණාත්මක බවකින් යුත් ආර්එන්ජී එකක් සාදන්න.
එරික් ලිපර්ට්

7

ව්‍යාජ සංඛ්‍යා උත්පාදනය වන්නේ ගණිතමය ශ්‍රිතයක් සහ ආරම්භක අගයක් ( බීජ ලෙස හැඳින්වේ ) භාවිතයෙන් වන අතර අහඹු සංඛ්‍යා එසේ නොවේ. ඔවුන්ගේ පුරෝකථනය මඟින් ක්‍රීඩාව නැවත ධාවනය සඳහා ඇදහිය නොහැකි තරම් ප්‍රයෝජනවත් වේ, මන්ද ඔබට අවශ්‍ය වන්නේ බීජය සහ ක්‍රීඩකයාගේ ආදානය පමණි - AI සෑම විටම එකම “අහඹු” ආකාරයෙන් ප්‍රතිචාර දක්වනු ඇත.


7

"සත්‍ය" අහඹු සහ "ව්‍යාජ" අහඹු අංකය අතර වෙනස වන්නේ පුරෝකථනය කිරීමේ හැකියාවයි. මෙම පිළිතුර දැනටමත් සපයා ඇත.

කෙසේ වෙතත්, බොහෝ උදාහරණ පෙන්වන ආකාරයට පුරෝකථනය කිරීමේ හැකියාව අනිවාර්යයෙන්ම නරක දෙයක් නොවේ. අනාවැකි පළ කළ හැකි දුර්ලභ අවස්ථාවන්ගෙන් එකකට ප්‍රායෝගික උදාහරණයක් මෙන්න: ගෝලීය ස්ථානගත කිරීමේ පද්ධතිය.

සෑම චන්ද්‍රිකාවක්ම සං signal ා ප්‍රචාරණ කාලය මැනීම සඳහා අවශ්‍ය වන ස්වයංක්‍රීය සහසම්බන්ධතාවයට හෝ හරස් සහසම්බන්ධතාවයට සුදුසු විශේෂිත PRN කේතයක් ( රන් කේත ) භාවිතා කරයි . මෙම රන් කේත සඳහා එකිනෙකා අතර සහසම්බන්ධය විශේෂයෙන් දුර්වල වන අතර එමඟින් චන්ද්‍රිකාවට නිශ්චිත හඳුනාගැනීමක් කළ හැකි නමුත් විමෝචිත අනුක්‍රමය සහ ග්‍රාහකය අතර සහසම්බන්ධය මගින් දුර ගණනය කිරීමට ඉඩ ලබා දේ.


3

අහඹු බව වේගයෙන් පරීක්ෂා කිරීම සඳහා, ඔබ [0; 1) හි අහඹු ඛණ්ඩාංක සමඟ ලකුණු ලබාගෙන ඒවා k- මාන .නකයක් තුළ තබන්න. එවිට ඔබ මෙම ube නකය උප කුලකවලට කපා දැමීමේ ක්‍රියාපටිපාටිය සිදු කරයි - එක් එක් උප කුලකයේ (හෝ උප ගෝලය) මෙම ක්‍රියාපටිපාටිය මගින් නිවැරදිව මැනිය යුත්තේ ප්‍රකට ප්‍රමේයයට අනුව උච්චාවචනයන් සමඟ ය.

ඔබ හමු වන තැන අහඹු ලෙස ගුණාත්මකභාවය වැදගත් වේ ...

  1. ආරක්ෂක අරමුණු. ඔබගේ ප්‍රධාන පරම්පරාව සඳහා පරාමිතියක් ලෙස භාවිතා කිරීම සඳහා ඔබ සංඛ්‍යා උත්පාදනය කරන විට, එය හොඳින් පුරෝකථනය කළ හැකිය - සතුරා එය 100% සම්භාවිතාවයකින් සොයාගෙන සෙවීම සඳහා ක්ෂේත්‍රය වඩා කුඩා කරයි.

  2. විද්‍යාත්මක අරමුණු. විද්‍යාවේදී ඔබට හොඳ තත්ත්වයේ සාමාන්‍ය මධ්යන්යයක් පමණක් නොව විවිධ අහඹු සංඛ්යා අතර සහසම්බන්ධයද ඉවත් කළ යුතුය. එබැවින් ඔබ (a_i - a) (a_ {i + 1} -a) ගෙන එහි ව්‍යාප්තිය සොයා ගන්නේ නම් එය සංඛ්‍යාලේඛනවලට අනුරූප විය යුතුය.

යුගල සහසම්බන්ධය ඊනියා "දුර්වල අහඹු බව" ලෙස හැඳින්වේ. ඔබට සැබෑ අහඹු බවක් අවශ්‍ය නම්, ඔබට තවත් විචල්‍යයන් 2 ක් සමඟ ඉහළ පෙළේ සහසම්බන්ධයක් තිබිය යුතුය.

අද සසම්භාවී බව සපයන්නේ ක්වොන්ටම් යාන්ත්‍රික ජනක යන්ත්‍ර පමණි.


2

සැබෑ අහඹු බව වැදගත් වන්නේ ඇයි?

සැබෑ අහඹු බව අවශ්‍ය වීමට ප්‍රධාන හේතු දෙකක් තිබේ:

  1. ගුප්ත ලේඛනකරණය සඳහා ඔබ ආර්එන්ජී භාවිතා කරන්නේ නම් (සැබෑ මුදල් සූදුව සහ ලොතරැයියක් ධාවනය කිරීම වැනි දේ ඇතුළුව), එවිට පීආර්එන්ජී එකක් ගණිතමය විශ්ලේෂණයට වඩා සයිෆර් දුර්වල කරයි (එය TRNG යැයි උපකල්පනය කරයි) ඔබ විශ්වාස කරනු ඇත. පීආර්එන්ජී ඇත්ත වශයෙන්ම අහඹු නොවනු ඇත, නමුත් රටාවක් ඇත - විරුද්ධවාදීන්ට කේතාංකයක් ඉරිතලා දැමිය හැකි රටාව ගසාකෑමට හැකිය.
  2. "අහඹු" යෙදවුම් අනුකරණය කිරීමට ඔබ RNG භාවිතා කරන්නේ නම්, උදාහරණයක් ලෙස දෝෂ පරීක්ෂා කිරීම හෝ අනුකරණය කිරීම සඳහා, එවිට PRNG මඟින් ඔබේ ප්‍රවේශය දුර්වල කරයි. ඔබ කිසිදු දෝෂයක් සොයා නොගත් විට, සෑම විටම එම සැක සහිත සැකයක් ඇති වනු ඇත: මගේ PRNG හි රටාව සමඟ කැපී පෙනෙන දෝෂයක් තිබේද, නමුත් මම TRNG එකක් පමණක් භාවිතා කළේ නම් එය පෙන්වනු ඇත්ද? මගේ සමාකරණයේ සොයාගැනීම යථාර්ථය නිවැරදිව විස්තර කරනවාද, නැතහොත් මා සොයාගත් සංසිද්ධිය හුදෙක් පීආර්එන්ජී රටාවේ පුරාවස්තුවක්ද?

මෙම ප්‍රදේශ වලින් පිටත, එය ඇත්ත වශයෙන්ම වැදගත් නොවේ. Caveat: ඔබේ PRNG ඉතා නරක නම්, එය තවමත් නුසුදුසු විය හැකිය - ඩයිස් සෑම විටම ඉහළට එන ක්‍රැප්ස් ක්‍රීඩාවක් කිරීමට ඔබට අවශ්‍ය නැත, ඔබේ ක්‍රීඩකයින් එයට කැමති නොවනු ඇත.

පයිතන්ගේ PRNG ප්‍රමාණවත් නොවන්නේ කෙසේද?

එවැනි සරල ක්‍රමවේදයක් භාවිතා කිරීමෙන් සැබෑ පීආර්එන්ජී හි අවාසි හඳුනා ගැනීමට ඔබට හැකි වනු ඇතැයි සිතිය නොහැක. ආර්එන්ජී පිළිබඳ සංඛ්‍යානමය විශ්ලේෂණය යනු තමන්ගේම අතින් විද්‍යා ක්ෂේත්‍රයක් වන අතර ඇල්ගොරිතමයේ “අහඹු බව” මැන බැලීම සඳහා ඉතා නවීන පරීක්ෂණ කිහිපයක් තිබේ. මේවා ඔබගේ සරල උත්සාහයට වඩා බොහෝ දියුණු ය.

පයිතන් සංවර්ධකයින් වැනි තාත්වික ලෝක පුස්තකාල නිර්මාණය කරන සෑම මෘදුකාංග සංවර්ධකයෙක්ම, මෙම සංඛ්‍යානමය පරීක්ෂණ ඔවුන්ගේ PRNG ක්‍රියාත්මක කිරීම ප්‍රමාණවත් දැයි බැලීමට අංගනයක් ලෙස භාවිතා කරයි. එබැවින්, සැබෑ සංවර්ධක අධීක්ෂණ අවස්ථා හැරුණු විට, ඔබට සැබෑ ලෝකයේ PRNG හි රටාවක් පහසුවෙන් හඳුනාගත හැකි වනු ඇතැයි සිතිය නොහැක. රටාවක් නොමැති බව මින් අදහස් නොවේ - PRNG හි අර්ථ දැක්වීම අනුව රටාවක් ඇත.


1

මූලික වශයෙන්, නිමැවුමේ ගණිත විශ්ලේෂණය මඟින් ප්‍රභවයක් අහඹු බව ඔබට ඔප්පු කළ නොහැක, උදා: ප්‍රභවය අහඹු යැයි පවසන භෞතික ආකෘතියක් (විකිරණශීලී ක්ෂය වීමේ දී මෙන්).

නිමැවුම් දත්තවල සංඛ්‍යානමය සහසම්බන්ධය සොයා ගැනීම සඳහා ඔබට කණ්ඩායම් පරීක්ෂණ ක්‍රියාත්මක කළ හැකිය, එම අවස්ථාවේ දී දත්ත අහඹු නොවන බව ඔප්පු වී ඇත (නමුත් අහඹු ප්‍රභවයකට අහඹු නොවන ප්‍රතිදානයන් තිබිය හැකිය, නැතහොත් නිශ්චිත ලබා දිය නොහැකි නම් එය සැබවින්ම අහඹු නොවේ ප්‍රතිදානය). එසේ නොමැතිනම් පරීක්ෂණ සමත් වුවහොත්, දත්ත ව්‍යාජ අහඹු යැයි ඔබට පැවසිය හැකිය.

සමහර අහඹු පරීක්ෂණ සමත් වීමෙන් අදහස් කරන්නේ ඔබ සතුව හොඳ PRNG (ව්‍යාජ සසම්භාවී සංඛ්‍යා උත්පාදක යන්ත්රයක්) ඇති අතර එය ආරක්ෂාව සම්බන්ධ නොවන යෙදුම් සඳහා ප්‍රයෝජනවත් වේ.

ආරක්ෂාව සම්බන්ධ නම් (එනම් ගුප්තකේතනය, යතුරු ලුණු උත්පාදනය, සූදුව සඳහා අහඹු සංඛ්‍යා උත්පාදනය ...) හොඳ PRNG එකක් තිබීම ප්‍රමාණවත් නොවේ, එයට අතිරේක ගුණාංග තිබිය යුතුය, එනම් ක්‍රියාකාරී ප්‍රතිදානය පෙර නිමැවුම් වලින් පහසුවෙන් අනුමාන නොකිරීම, ශ්‍රිතයට ප්‍රියජනක පරිගණක පිරිවැයක් තිබිය යුතුය (භාවිතා කළ හැකි තරම් සීමිත නමුත් තිරිසන් බලහත්කාරයෙන් උත්සාහ කිරීම පරාජය කිරීමට තරම් ඉහළ), ශ්‍රිතය ක්‍රියාත්මක කරන දෘඩාංග - හෝ උපාංගය, අද අමුතු අවස්ථාවක එය ඇනලොග් උපාංගයක් - නොවිය යුතුය පහසුවෙන් හීලෑ වන්න.

හොඳ PRNG එකක් තිබීම නව සහ අනපේක්ෂිත රටා නිර්මාණය කිරීමට ක්‍රීඩා වලදී ප්‍රයෝජනවත් විය හැකි අතර, සංකේතනය කිරීමේදී - තනි පෝස්ට් එකකින් පැහැදිලි කිරීමට අපහසුය, ගුප්තකේතනයේ ක්‍රියා පටිපාටියෙන් පිටවන දේ ව්‍යාජ අහඹු විය යුතු අතර රටා පෙන්වන්නේ නැත. පෙර ගුප්තකේතනය කළ දත්ත පහත ගුප්තකේතනය කළ දත්ත සමඟ සම්බන්ධ කළ හැකිය, නැතහොත් සරල පෙළ දත්ත සංකේතාත්මක දත්ත සමඟ සම්බන්ධ කළ හැකිය, නැතහොත් එකිනෙකට වෙනස් කේතාංක පෙළ දෙකක් සම්බන්ධ කළ හැකිය (එබැවින් සරල පා on මත අනුමාන කළ හැකිය) ....


-5

කෙටි කතාව:

පද්ධතියේ වත්මන් මයික්‍රෝ තත්පර භාවිතා කරමින් අහඹු බීජයක් ජනනය කරයි.

මෙම උපක්‍රමය තරමක් පැරණි වන අතර එය තවමත් ක්‍රියාත්මක වේ.

බල තිරිසන් සාධකය හැරුණු විට, හැකි සෑම අංකයකින්ම “ඔට්ටු ඇල්ලීමෙන්” සෑම සංයෝජනයක්ම තීරණය කළ හැකි අතර එය මෙම ප්‍රශ්නයේ කාරණය නොවේ, විශේෂයෙන් බොහෝ අහඹු සංඛ්‍යා ඔහු භාවිතා කිරීමට පෙර වටකුරු කළ විට.

උදාහරණයක් ලෙස කියමු, භාවිතා කළ බීජ අගය 10 ක් පමණක් භාවිතා කර තීරණය කළ හැකිය. ඉතින්, බීජය දැන ගැනීමෙන්, මට ඊළඟ වටිනාකම අනුමාන කළ හැකිය.

මම බීජ = 1 භාවිතා කරන්නේ නම් මට ඊළඟ අනුක්‍රමය ලබා ගත හැකිය:

1, 2, 3, 4, 5, 6, 7, 8, 9 ... (සහ බීජ අයිඩී 1 සහ ඊළඟ අගය 10 භාවිතා කළ බව මම අඩු කරමි)

නමුත්, සෑම "nth" අගයක්ම යැවීම වෙනස් කළහොත් කුමක් සිදුවේද? වත්මන් මයික්‍රෝ තත්පර අනුව බීජ වෙනස් කිරීම ලාභ උපක්‍රමයකි (එනම් එයට බොහෝ CPU චක්‍ර අවශ්‍ය නොවේ).

එබැවින් දැන් අනුක්‍රමය: (බීජ = 1) 1, 2, 3, 4, 5, (බීජ = 2), 7, 9, 11, 13 ... (15?)

මේ අවස්ථාවේ දී:

අ) කුමන බීජ භාවිතා කළේදැයි මට අඩු කළ නොහැක.

ආ) එර්ගෝ, මට ඊළඟ වටිනාකම අනුමාන කළ නොහැක.

ඇ) මට කළ හැකි එකම අනුමානය නම් ඊළඟ බීජය ප්‍රධාන සංඛ්‍යාවක් විය හැකි බව අඩු කිරීමයි.

කෙසේ වෙතත්, බොහෝ නවීන සසම්භාවී උත්පාදක ඇල්ගොරිතම දැනටමත් මෙම උපක්‍රමය භාවිතා කරන්නේ හුඩ් යටතේ ය.

සත්‍ය කාරණය නම්, “සත්‍ය” සසම්භාවී අංකයක් නිර්මාණය කිරීම සඳහා අපට ක්වොන්ටම් පරිගණකයක් අවශ්‍ය නොවන අතර, අපගේ පරිගණකයේ ක්වාර්ට්ස් ස් stal ටිකයේ නිරවද්‍යතාවය අහඹු උත්පාදකයක් ලෙස ක්‍රියා කරයි, එසේම අපගේ CPU හි අහඹු කාර්යක්ෂමතාව ද සලකා බලන්නේ නැත. CPU සාමාන්‍යයෙන් එකවර කාර්යයන් කිහිපයක් කරන බව.


2
මෙය තරමක් නරක අදහසක් වන අතර එය සත්‍ය වශයෙන්ම අනපේක්ෂිත අනුක්‍රමයක් අවශ්‍ය වන දෙයට ගොදුරු වීමේ ප්‍රභවයකි. ඔබ මයික්‍රෝ තත්පර ගතහොත්, ඔබට ඇත්තේ බීජ සඳහා ඇති හැකියාව 10 ^ 6 ක් පමණි.
HoLyVieR

@HoLyVieR: ඔබ ආරක්ෂාව ගැන සැලකිලිමත් වන්නේ නම් එය නිසැකවම නරක අදහසකි, නමුත් ඔබ සෑදී ඇති තරම් නරක නැත: ඔබ සාමාන්‍යයෙන් මයික්‍රෝ තත්පර භාවිතා කරන්නේ පද්ධති ආරම්භයේ සිට (හෝ යුනික්ස් යුගය ....) විය හැකි අගයන්හි පරාසය සැලකිය යුතු ලෙස වැඩි කරයි.
මිකෙරා

1
ikemikera එය වඩා හොඳ නැත, ඉල්ලීම ක්‍රියාවට නංවන වේලාව පුරෝකථනය කළ හැකිය. එය හොඳ මුරපද යළි පිහිටුවීමේ ක්‍රියාකාරිත්වය සඳහා අවදානමේ දෛශිකයකි. එම ස්ක්‍රිප්ට් මඟින් ඔබේ තාක්‍ෂණය සමඟ "අහඹු" ටෝකනයක් ජනනය කර ඇති අතර එය ක්‍රියාත්මක කළ වේලාව සොයා ගැනීම තරමක් සුළු බැවින් ප්‍රහාරකයාට ජනනය කළ ටෝකනය සොයාගත හැකිය ... මුරපද යළි පිහිටුවීම සඳහා ඉල්ලීම යවන ලද කාලයම + - 150ms.
HoLyVieR

ඇත්ත වශයෙන්ම, එම තත්වය ඉතා නරක ය. නමුත් පවත්නා තත්වය එහිදී රාජ්ය පද්ධතිය ආරම්භයේදී කූල් වන අතර, පහර නැත ආරම්භක කාලය අනුමාන හොඳ ක්රමයක් ඉතා නරක ලෙස නොවේ ඇත. ඔබට පහසුවෙන් තෝරා ගත හැකි මයික්‍රෝ තත්පර 10 ^ 12 ක් තිබිය හැකි අතර, එමඟින් සමහර වර්ගයේ ප්‍රහාරයන් වලක්වා ගත නොහැක. පැහැදිලිව කිවහොත්: මෙම සියලු විසඳුම් ක්‍රිප්ටෝ දෘෂ්ටිකෝණයකින් ඉතා නරක ය, නමුත් නියතයන් වැදගත් වේ.
මිකෙරා

සබැඳි සේවාදායකයන් සඳහා, පද්ධති අතිකාල තොරතුරු සමහර විට ප්‍රසිද්ධියේ ඉදිරිපත් කරයි. නැතහොත් ඔබට එය "සිදුවීම්. නැවත සේවාදායකය" යන තත්ව පිටුවකින් ලබා ගත හැකිය. නැතහොත් ඔබට පිං කළ හැකිය, විශාල වේලාවක් රැඳී සිටින්න, එය යන්ත්‍ර නැවත පණගැන්වීමක් විය හැකි බව සලකන්න (එය පරීක්ෂා කිරීමට මිලියන සිය ගණනක් කාලය ලබා දෙනු ඇත, එය අඩුය).
ඩෙරෙක්සන්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.