क्या यह संख्या यादृच्छिक है?


18

मैंने 0 और 2 32 के बीच 128 यादृच्छिक पूर्णांकों के लिए random.org पूछा - 1. चूंकि यादृच्छिक संख्या जनरेटर पहले 64 नंबर देने के लिए बहुत उत्सुक था, वे स्पष्ट रूप से अन्य 64 की तुलना में अधिक यादृच्छिक हैं

एक पूर्ण कार्यक्रम या फ़ंक्शन लिखें जो एक सत्य परिणाम देता है जब निम्नलिखित 64 पूर्णांकों में से एक इनपुट होता है:

[1386551069, 1721125688, 871749537, 3410748801, 2935589455, 1885865030, 776296760, 614705581, 3841106923, 434616334, 1891651756, 1128215653, 256582433, 310780133, 3971028567, 2349690078, 489992769, 493183796, 3073937100, 3968540100, 777207799, 515453341, 487926468, 2597442171, 950819523, 1881247391, 3676486536, 3852572850, 3498953201, 2544525180, 297297258, 3783570310, 2485456860, 2866433205, 2638825384, 2405115019, 2734986756, 3237895121, 1560255677, 4228599165, 3106247743, 742719206, 2409129909, 3008020402, 328113612, 1081997633, 1583987616, 1029888552, 1375524867, 3913611859, 3488464791, 732377595, 431649729, 2105108903, 1454214821, 997975981, 1764756211, 2921737100, 754705833, 1823274447, 450215579, 976175934, 1991260870, 710069849]

और अन्य 64 नंबरों के लिए एक गलत परिणाम:

[28051484, 408224582, 1157838297, 3470985950, 1310525292, 2739928315, 3565721638, 3568607641, 3857889210, 682782262, 2845913801, 2625196544, 1036650602, 3890793110, 4276552453, 2017874229, 3935199786, 1136100076, 2406566087, 496970764, 2945538435, 2830207175, 4028712507, 2557754740, 572724662, 2854602512, 736902285, 3612716287, 2528051536, 3801506272, 164986382, 1757334153, 979200654, 1377646057, 1003603763, 4217274922, 3804763169, 2502416106, 698611315, 3586620445, 2343814657, 3220493083, 3505829324, 4268209107, 1798630324, 1932820146, 2356679271, 1883645842, 2495921085, 2912113431, 1519642783, 924263219, 3506109843, 2916121049, 4060307069, 1470129930, 4014068841, 1755190161, 311339709, 473039620, 2530217749, 1297591604, 3269125607, 2834128510]

इन 128 नंबरों में से एक के अलावा कोई भी इनपुट अपरिभाषित व्यवहार नहीं है।

यदि आपका समाधान प्रोग्रामिक रूप से पाया जाता है, तो कृपया इसे उत्पन्न करने के लिए उपयोग किए गए कोड को भी साझा करें!

यह , इसलिए बाइट्स में सबसे छोटा समाधान जीतता है।


19
चूंकि यादृच्छिक संख्या जनरेटर ने पहले 64 नंबर दिए थे, इसलिए उन्हें अधिक यादृच्छिक होना चाहिए ಠ ___ gave
लुइस मेंडो

आप दो सेट मोडुलो 834
कैलकुलेटरफ्लीन

1
वे संख्याएँ यादृच्छिक नहीं हैं।
कैलक्यूलेटरफलाइन

"Maybe, not enough information."&33 बाइट्स, सवाल का जवाब देता है।
कैलकुलेटरफ्लीन

3
@CatsAreFluffy वास्तव में, जब तक इनपुट में 0 या 1 नहीं होता है और कोई दो तत्व 1 से भिन्न नहीं होते हैं, तब तक आप उन्हें मॉडुलो श्रृंखला द्वारा अलग कर सकते हैं। उदाहरण के लिए इससे अलग [4 20 79]किया [8 18 100]जा सकता है [99 79 20 17 7 4](देखें कि क्या आप पैटर्न को देख सकते हैं)। निश्चित रूप से, आपके उत्तर के शुरुआती आधे हिस्से में इनपुट की तुलना में बहुत छोटे मोडुलो का उपयोग किया जा सकता है, लेकिन पिछले आधे हिस्से में एक समय में एक तत्व को स्थानांतरित करना शामिल है।
Sp3000

जवाबों:


11

CJam, 53 52 47 बाइट्स

l~"X    0'ò"2/Dfb+:%"gÇâì6Ô¡÷Ç8nèS¡a"312b2b=

वहाँ unprintables है, लेकिन दो तार द्वारा प्राप्त किया जा सकता है

[88 9 48 5 39 5 29 1 242]:c
[8 103 199 226 236 54 212 15 161 247 199 56 110 232 83 161 97]:c

क्रमशः। इससे यह भी पता चलता है कि कोड अंक 256 से नीचे हैं।

यह एक मोडुलो चेन उत्तर है, जहां हम इनपुट मोड् ट के लिए निम्नलिखित मोड्यूल लागू करते हैं:

[1153 629 512 378 242 136]

चूंकि इस सूची में पूर्णांक 255 से अधिक हैं, इसलिए सूची प्रत्येक दो वर्णों का उपयोग करके एन्कोडेड है। डिकोडिंग द्वारा किया जाता है 2/Dfb, जो स्ट्रिंग को लंबाई दो के टुकड़ों में विभाजित करता है और प्रत्येक को आधार 13 संख्या (जैसे 88*13 + 9 = 1153) से परिवर्तित करता है । हालांकि, डिकोडिंग के दो अपवाद हैं:

  • अंतिम संख्या ( 136) शामिल नहीं है (नीचे देखें),
  • दूसरी-आखिरी संख्या को एक एकल चार्ट द्वारा दर्शाया गया है, क्योंकि संख्या ( 242) 256 से कम है और विषम लंबाई के आकार 2 के भाग में विभाजित होने से अंत में एक आकार 1 सरणी निकल जाएगा। इस टिप के लिए @ MartinBttner को धन्यवाद!

एक बार मोडुलोस ने इनपुट पूर्णांक को अपेक्षाकृत कम संख्या में घटा दिया है, हम एक तालिका से एक लुकअप करते हैं। इस तालिका को दूसरी स्ट्रिंग के माध्यम से एन्कोड किया गया है, जिसे आधार 312संख्या में बदल दिया जाता है और फिर बेस 2 तक डिकोड किया जाता है, जिसे हम इंडेक्स करते हैं। चूंकि CJam की सरणी अनुक्रमण लपेटती है, इसलिए हम अंतिम मॉडुलो को पहले बताए अनुसार छोड़ सकते हैं।

इसे ऑनलाइन आज़माएं | परीक्षण सूट


1
आप लोग कैसे जादू मोडुली के साथ आते हैं?
कैलकुलेटरएफलाइन

@CatsAreFluffy मोडुलोस की संख्या पर एक सीमा के साथ एक साधारण डीएफएस। मेरा वर्तमान कार्यान्वयन काफी धीमा है, इसलिए यदि मुझे लगता है कि कार्यक्रम के लिए थोड़ी देर के लिए अटक गया है तो मैं एक प्रारंभिक प्रारंभिक बिंदु की कोशिश करता हूं।
183 पर Sp3000

डीएफएस क्या है? (विकिपीडिया मदद नहीं करता है।)
कैलक्यूलेटरफिलीन

@CatsAreFluffy गहराई-पहली खोज
Sp3000

आह। मैं सिर्फ एक लालची एल्गोरिथ्म का इस्तेमाल किया।
कैलकुलेटर

4

रेटिना , 117 बाइट्स

([023]3|[067]0|[1289]1|5[5689]|67|96|88|77|65|05)$|^(8|4[358]|7[147]|51|37|30)|865|349|2.{5}5|761|74[348]|728|811|990

एक रेगेक्स गोल्फ उत्तर, सत्य के लिए एक सकारात्मक पूर्णांक का उत्पादन और मिथ्या के लिए शून्य।

इसे ऑनलाइन आज़माएं! | टेस्ट सूट - सत्य | टेस्ट सूट - मिथ्या | Regex101


2

जावास्क्रिप्ट (ईएस 6) 233

अनाम फ़ंक्शन के रूप में 0 falsyऔर nonzero के रूप में लौट रहा हैtruthy

x=>~"lnhp2wm8x6m9vbjmrqqew9v192jc3ynu4krpg9t3hhx930gu8u9n1w51ol509djycdyh077fd1fnrzv6008ipkh0704161jayscm0l6p4ymj9acbv5ozhjzxo3j1t20j9beam30yptco033c9s3a8jwnre63r29sfbvc5371ulvyrwyqx3kfokbu66mpy9eh" // newline added for readability
.search((x.toString(36)).slice(-3))

आधार 36 में संख्या प्रतिनिधित्व में अंतिम 3 अंकों की जाँच करना।

चेक स्ट्रिंग को बनाया गया है:

a=[1386551069, 1721125688, ... ]
H=x=>(x.toString(36)).slice(-3)
Q=a.map(x=>H(x)).join('')

परीक्षा

f=x=>~"lnhp2wm8x6m9vbjmrqqew9v192jc3ynu4krpg9t3hhx930gu8u9n1w51ol509djycdyh077fd1fnrzv6008ipkh0704161jayscm0l6p4ymj9acbv5ozhjzxo3j1t20j9beam30yptco033c9s3a8jwnre63r29sfbvc5371ulvyrwyqx3kfokbu66mpy9eh"
.search((x.toString(36)).slice(-3))

a=[1386551069, 1721125688, 871749537, 3410748801, 2935589455, 1885865030, 776296760, 614705581, 3841106923, 434616334, 1891651756, 1128215653, 256582433, 310780133, 3971028567, 2349690078, 489992769, 493183796, 3073937100, 3968540100, 777207799, 515453341, 487926468, 2597442171, 950819523, 1881247391, 3676486536, 3852572850, 3498953201, 2544525180, 297297258, 3783570310, 2485456860, 2866433205, 2638825384, 2405115019, 2734986756, 3237895121, 1560255677, 4228599165, 3106247743, 742719206, 2409129909, 3008020402, 328113612, 1081997633, 1583987616, 1029888552, 1375524867, 3913611859, 3488464791, 732377595, 431649729, 2105108903, 1454214821, 997975981, 1764756211, 2921737100, 754705833, 1823274447, 450215579, 976175934, 1991260870, 710069849]
b=[28051484, 408224582, 1157838297, 3470985950, 1310525292, 2739928315, 3565721638, 3568607641, 3857889210, 682782262, 2845913801, 2625196544, 1036650602, 3890793110, 4276552453, 2017874229, 3935199786, 1136100076, 2406566087, 496970764, 2945538435, 2830207175, 4028712507, 2557754740, 572724662, 2854602512, 736902285, 3612716287, 2528051536, 3801506272, 164986382, 1757334153, 979200654, 1377646057, 1003603763, 4217274922, 3804763169, 2502416106, 698611315, 3586620445, 2343814657, 3220493083, 3505829324, 4268209107, 1798630324, 1932820146, 2356679271, 1883645842, 2495921085, 2912113431, 1519642783, 924263219, 3506109843, 2916121049, 4060307069, 1470129930, 4014068841, 1755190161, 311339709, 473039620, 2530217749, 1297591604, 3269125607, 2834128510]

A.textContent=a.map(x=>f(x))
B.textContent=b.map(x=>f(x))
<table>
  <tr><th>first 64 - truthy</th></tr><tr><td id=A></td></tr>
  <tr><th>other 64 - falsy</th></tr><tr><td id=B></td></tr>
</table>  


1

गणितज्ञ, 218 217 बाइट्स

Fold[Mod,#,{834,551,418,266,228,216,215,209,205,199,198,195,178,171,166,162,154,151,146,144,139,137,122,120,117,114,110,106,101,98,95,88,84,67,63,61,60,57,55,51,45,44,43,41,40,35,34,30,27,26,25,23,20,14,13,11,10,9}]<1

जो भी कारण के लिए, moduli का एक सेट मौजूद है जो हमें दो सेटों को अलग करने की अनुमति देता है, चाहे तो moduli लगाने के बाद, परिणाम शून्य है या नहीं। इस कार्यक्रम द्वारा मोडुली की लंबी सूची तैयार की गई थी:

Block[{data1, data2, n, mods}, 
 data1 = {1386551069, 1721125688, 871749537, 3410748801, 2935589455, 
   1885865030, 776296760, 614705581, 3841106923, 434616334, 
   1891651756, 1128215653, 256582433, 310780133, 3971028567, 
   2349690078, 489992769, 493183796, 3073937100, 3968540100, 
   777207799, 515453341, 487926468, 2597442171, 950819523, 1881247391,
    3676486536, 3852572850, 3498953201, 2544525180, 297297258, 
   3783570310, 2485456860, 2866433205, 2638825384, 2405115019, 
   2734986756, 3237895121, 1560255677, 4228599165, 3106247743, 
   742719206, 2409129909, 3008020402, 328113612, 1081997633, 
   1583987616, 1029888552, 1375524867, 3913611859, 3488464791, 
   732377595, 431649729, 2105108903, 1454214821, 997975981, 
   1764756211, 2921737100, 754705833, 1823274447, 450215579, 
   976175934, 1991260870, 710069849};
 data2 = {28051484, 408224582, 1157838297, 3470985950, 1310525292, 
   2739928315, 3565721638, 3568607641, 3857889210, 682782262, 
   2845913801, 2625196544, 1036650602, 3890793110, 4276552453, 
   2017874229, 3935199786, 1136100076, 2406566087, 496970764, 
   2945538435, 2830207175, 4028712507, 2557754740, 572724662, 
   2854602512, 736902285, 3612716287, 2528051536, 3801506272, 
   164986382, 1757334153, 979200654, 1377646057, 1003603763, 
   4217274922, 3804763169, 2502416106, 698611315, 3586620445, 
   2343814657, 3220493083, 3505829324, 4268209107, 1798630324, 
   1932820146, 2356679271, 1883645842, 2495921085, 2912113431, 
   1519642783, 924263219, 3506109843, 2916121049, 4060307069, 
   1470129930, 4014068841, 1755190161, 311339709, 473039620, 
   2530217749, 1297591604, 3269125607, 2834128510};
 n = 1;
 mods = {};
 While[Intersection[Mod[data1, n], Mod[data2, n]] != {}, n++];
 FixedPoint[
  (mods = Append[mods, n]; data1 = Mod[data1, n]; 
    data2 = Mod[data2, n]; n = 1;
    While[Intersection[Mod[data1, n], Mod[data2, n]] != {}, n++]; 
    n) &
  , n];
 {mods, {Fold[Mod, data1, mods], Fold[Mod, data2, mods]}}
 ]

पहला आउटपुट मोडुली है, दूसरा और तीसरा आउटपुट दो सूचियां हैं, जिसमें मॉड्यूल लगाए गए हैं। दो लंबी सूचियाँ सेट हैं।


2
आप शायद सूची के एक भाग को एक स्ट्रिंग में संपीड़ित कर सकते हैं।
njpipeorgan

1

PowerShell, v3 + 194 बाइट्स

$args[0]%834%653-in(40..45+4,8,12,51,60,64,69,76,84,86,93,97,103,117+137..149+160,162,178+195..209+215..227+255,263+300..329+354,361,386,398,417,443,444+469..506+516,519,535,565,581,586,606,618)

थोड़ा अलग दृष्टिकोण, इसलिए मुझे लगा कि मैं इसे पोस्ट करूंगा। यह कम से कम जीतने वाला नहीं है, लेकिन यह किसी और को अपने कोड को छोटा करने के लिए विचार दे सकता है।

हम अभी भी इनपुट पूर्णांक ले रहे हैं $args[0]और इसके लिए मोडुलो संचालन लागू कर रहे हैं, इसलिए वहां कुछ भी अलग नहीं है। उपरोक्त में, हम -inऑपरेटर (इसलिए v3 + आवश्यकता) का उपयोग कर रहे हैं ताकि यह उन Trueमूल्यों के लिए आउटपुट होगा जो सत्य परीक्षण मामले में हैं।

हालांकि, मैं परिणामी सरणियों को खोजने का प्रयास कर रहा हूं जहां हम ..बाइट की गिनती को छोटा करने के लिए रेंज फ़ंक्शन का लाभ उठा सकते हैं , फिर भी सच्चाई और गलत मूल्यों के बीच अलग-अलग सरणियां हैं। हम ऐसा कर सकते हैं क्योंकि सत्य / फाल्सी इनपुट के अलावा अन्य व्यवहार अपरिभाषित है, इसलिए यदि सीमा सत्य / फाल्सी इनपुट के बाहर मूल्यों को पकड़ती है, तो यह आउटपुट से कोई फर्क नहीं पड़ता।

यह अब तक की एक सुंदर मैनुअल प्रक्रिया है, क्योंकि लक्ष्य को खोजने का प्रयास करना है और उन मोडुलो को ढूंढना है जहां किसी सत्य या गलत तरीके से संख्याओं के बीच बड़ा अंतर होता है और दूसरे सरणी में उस अंतराल में बड़ी मात्रा में नंबर होते हैं। मैं ज्यादातर अब तक अंतर्ज्ञान और आंत से जा रहा हूँ, लेकिन मैं अंततः इसे हल करने के लिए एक जानवर लिख सकता हूँ। ऊपर अब तक पाया गया सबसे छोटा (मैंन्युअल रूप से) है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.