1 / एन संभावना


29

क्योंकि पर्याप्त सरल चुनौतियां नहीं हैं:

वैकल्पिक रूप से अनाम प्रोग्राम या फ़ंक्शन बनाएँ, जो (किसी भी तरह से) पूर्णांक 1 ≤ N named 10000 दिया गया हो, आपकी भाषा के ट्रू वैल्यू को 1 / N, छद्म अन्यथा की छद्म यादृच्छिक संभावना के साथ आउटपुट करता है।

कृपया ध्यान दें कि नामकरण की आवश्यकता को हटा दिया गया है। तदनुसार जवाब और स्कोर संपादित करने के लिए स्वतंत्र महसूस करें।

कुछ भाषाएं ट्रू और फाल्स के लिए 1 (या -1) और 0 का उपयोग करती हैं, यह भी ठीक है।

उदाहरण:

उदाहरण इनपुट परीक्षण:

4 -> True
4 -> False
4 -> False
4 -> False
4 -> False
4 -> True
4 -> False
4 -> False

Ie दिया 4; यह 25% मौका के साथ सही है और 75% मौका के साथ गलत है।




जैसा कि सभी भाषाओं ने "छद्म आयामीता" में नहीं बनाया है क्या बीज को दूसरे तर्क के रूप में प्राप्त करना संभव है? (उदा। ब्रेनफक)
२१

@flawr वर्तमान मिलीसेकंड का उपयोग करें ...
Adám

1
Nहमें स्वीकार करने के लिए सबसे बड़ा क्या है ?
टोबी स्पाईट

जवाबों:


27

ParserFunctions , 48 बाइट्स के साथ MediaWiki टेम्प्लेट

{{#ifexpr:1>{{#time:U}} mod {{{n}}}|true|false}}

13
भाषा का रोचक विकल्प :-)
Adám

6
किसने सोचा था कि MediaWiki टेम्पलेट्स के लिए गैर-नियतात्मक कार्यों को जोड़ना समझदार होगा !?
user253751

4
@immibis: अच्छी तरह से गैर नियतिवाद से होता है #time, शायद रहने वाले लोगों की उम्र, आदि को अपडेट करने
विलेम वान Onsem

15

अजगर, 3 बाइट्स

!OQ

इसे ऑनलाइन आज़माएं

0 से इनपुट तक यादृच्छिक विकल्प का सरल उलटा

Pyth में मनोरंजक होने के कारण ऐसा फ़ंक्शन करना संभव नहीं है जो बिना ऐसा करता है $क्योंकि Pyth फ़ंक्शन स्वचालित रूप से याद किए जाते हैं।



@LeakyNun आह ठीक है, मैं एक यादृच्छिक समारोह के लिए समय का उपयोग करने के बारे में भूल गया था, यह बहुत चालाक है।
FryAmTheEggman

नहीं, मैंने अभी इसे डी-मेमो करने के लिए समय का उपयोग किया है।
लीक नून

1
मुझे पता है, मुझे लगता है कि मैंने इसे अच्छी तरह से शब्द नहीं दिया: पी ने कहा कि मुझे नहीं लगता कि यह वास्तव में अधिकांश सबमिशन के लिए वर्कअराउंड के रूप में काम करेगा, अगर यह कभी किसी कारण से पूर्ण कार्यक्रम से बेहतर था। समय को एक तर्क के रूप में लेना शायद डिफ़ॉल्ट रूप से अनुमति नहीं है।
FryAmTheEggman

1
@ LeakyNun मुझे विश्वास है कि यह प्रश्न Qअंत में भरने से पहले है , जैसा कि मैंने उत्तर दिया होता !O;)
FryAmTheEggman

12

सीजाम, 5 बाइट्स

इन लोगों के साथ जल्दी करना होगा ...

rimr!

इसका परीक्षण यहां करें।

व्याख्या

ri e# Read input and convert to integer N.
mr e# Get a uniformly random value in [0 1 ... N-1].
!  e# Logical NOT, turns 0 into 1 and everything else into 0.

11
" इन लोगों के साथ त्वरित होना चाहिए ... " जो ओपी से असहमत होने का एक कारण है कि " पर्याप्त सरल कोड-गोल्फ चुनौतियां नहीं हैं "। यदि FGITW एक मुद्दा है, तो IMO यह बहुत आसान है।
टेलर में पीटर टेलर

12

टीआई-बेसिक, एक बाइट टोकन का उपयोग करके 4 बाइट्स

not(int(Ansrand

निर्धारित करता है कि इनपुट संख्या का पूर्णांक भाग [0,1] में एक यादृच्छिक संख्या शून्य है। Ansrand<1भी काम करता है।


कैसे ... वह चार बाइट्स है?
जॉन ड्वोरक

3
@JanDvorak पहला बाइट्स नहीं है (, अगला int है (, अगला है Ans, अगला है रैंड। सामान्य तौर पर, रेखांकन कैलकुलेटर) ASCII को कार्यक्रमों के लिए उनके आंतरिक प्रतिनिधित्व के रूप में उपयोग नहीं करते हैं।
user253758

सामान्य रूप से, कंप्यूटर ASCII का उपयोग नहीं करते हैं। यह संदिग्ध हो सकता है, क्या इस बारे में कोई मेटा चर्चा है?
क्रोल्टन

7
@ क्रोल्टन हाँ; यह मेटा चर्चा है, और यह टोकन की सूची है जो एक बाइट है, जिसमें मेरे द्वारा उपयोग किए गए सभी चार शामिल हैं।
lirtosiast

@ThomasKwa धन्यवाद!
क्रोल्टन

11

MATL, 5 बाइट्स

इस एक के तीन अलग-अलग संस्करण, सभी की लंबाई 5।

iYr1=

जो एक इनपुट ( i) लेता है , 1 और उस संख्या के बीच एक यादृच्छिक पूर्णांक बनाता है ( Yr), और देखता है कि क्या यह 1 ( 1=) के बराबर है । वैकल्पिक रूप से,

li/r>

एक 1 ( l, एक वर्कअराउंड बनाएं क्योंकि 1iपल में करने के साथ एक बग है ), एक इनपुट लें ( i), 1 / N पाने के लिए विभाजित करें ( /), 0 और 1 के बीच एक यादृच्छिक संख्या बनाएं ( r), और देखें कि क्या यादृच्छिक संख्या 1 / N से छोटी है। या,

ir*1<

ले और इनपुट ( i), और 0 और 1 ( r*) के बीच एक यादृच्छिक संख्या से गुणा करें , और देखें कि परिणाम 1 ( 1<) से छोटा है या नहीं ।

Matlab में, MATL नहीं, आप इस अनाम फ़ंक्शन को कर सकते हैं

@(n)n*rand<1

12 बाइट्स के लिए, जो कि ans(5)उदाहरण के लिए, का उपयोग करके किया जाता है ।


10

जावास्क्रिप्ट ईएस 6, 15 बाइट्स

-5 बाइट्स डाउनगेट के लिए धन्यवाद।

x=>1>new Date%x

इस उत्तर की तकनीक के आधार पर (उपयोग) ।


1
new Dateकाम भी कर सकता है और कुछ बाइट्स बचा सकता है
डाउनगैट

@Downgoat आह, सही, दिनांक यादृच्छिकता!
कॉनर ओ'ब्रायन

10

जूलिया, 17 16 15 बाइट्स

n->2>rand(1:n)

यह एक ऐसा फंक्शन है जो 1 के बीच एक यादृच्छिक पूर्णांक बनाता है nऔर परीक्षण करता है कि क्या यह 2 से कम है। ऐसा होने का 1 / n मौका होगा, और इस प्रकार लौटने का 1 / n मौका होगा true

थॉमस केवा को 1 बाइट धन्यवाद!


9

माइक्रोसेप्टिक II , 3 बाइट्स

NR!

एक पूर्णांक पढ़ता है n, 0और n-1(समावेशी) के बीच एक यादृच्छिक पूर्णांक बनाता है , फिर उस मूल्य पर बूलियन नकार लागू करता है।


8

कैंडी , 2 बाइट्स

Hn

एच , हेइसेन-डबल के लिए खड़ा है

n नहीं के लिए खड़ा है

संख्यात्मक इनपुट के रूप में 'n' को -i ध्वज के साथ पारित किया गया है। स्टैक पर छोड़ दिए गए मूल्यों को बाहर निकलने पर मुद्रित किया जाता है।

"लंबा फार्म:

rand   # number between 0 and pop()
not    # cast to int, invert non-zero to zero, and zero to one

मुझे लगता है कि आपको -iएक बाइट के रूप में गिनना होगा ।
lirtosiast

1
मूल रूप से संख्यात्मक इनपुट पास करने का एकमात्र तरीका -i ध्वज के साथ है। मैं केवल उन भाषाओं का अनुमान लगाता हूं जो स्टडिन से पढ़ती हैं, कोई इनपुट विनिर्देशन दंड नहीं भुगतती हैं?
डेल जॉन्सन

ठीक है, अगर कोई जेनेरिक इनपुट फ्लैग था, या आपने सिर्फ तर्कों को पारित करने के लिए नियमित सीएलए का इस्तेमाल किया, तो यह निश्चित रूप से ठीक होगा। यह अनुचित लगता है कि डेटाटाइप को मुफ्त में निर्दिष्ट किया जा रहा है, हालांकि।
lirtosiast

2
@ThomasKwa क्या डायनेमिक भाषा में लिखे फ़ंक्शन को यह निर्दिष्ट करने के लिए बाइट्स की गणना करनी चाहिए कि तर्क प्रलेखन में पूर्णांक है? में lambda x: random.random()<1/x(ungolfed) यह भी "मुक्त करने के लिए निर्दिष्ट" जाता है कि तर्क एक संख्या है।
user253751

@ मिनीबिस हम्म, यह एक अच्छी बात है। मुझे लगता है कि कार्यक्रमों और कार्यों के लिए नियमों को बनाए रखने की कोशिश की जानी चाहिए और फिर इसे अनुमति देनी चाहिए। मैं मेटा पर एक पोस्ट करूँगा।
lirtosiast


7

आर, 30 22 बाइट्स

कोड

cat(runif(1)<1/scan())          #new
f=function(N)cat(runif(1)<1/N)  #old

यह एक समान वितरण (0 से 1) से एक संख्या उत्पन्न करता है और इसे सही 1 / n बार का मूल्यांकन करना चाहिए।


6

जाप, 6 बाइट्स

1>U*Mr

इसे ऑनलाइन आज़माएं!

Mrजेएस के बराबर है Math.random। बाकी सब बहुत स्पष्ट है। मैं शायद एक संख्या फ़ंक्शन जोड़ सकता था जो 0 और संख्या के बीच एक यादृच्छिक फ्लोट उत्पन्न करता है। ऐसा होने पर, दो बाइट्स बच जाएंगे:

1>Ur    // Doesn't currently work

वैकल्पिक संस्करण:

1>Ð %U

Ðके बराबर है new Date(, और दिनांक ऑब्जेक्ट, जब किसी संख्या में परिवर्तित करने के लिए कहा जाता है, तो मिलीसेकंड में वर्तमान टाइमस्टैम्प बन जाता है। इस प्रकार, यह पूरी तरह से यादृच्छिक है, जब तक कि इसे प्रति एमएस कई बार नहीं चलाया जाता है।


6

मारबेलस , 21 बाइट्स

}0    # takes one input n
--    # decrements n
??    # random value from range 0..n (inclusive)
=0?0  # push right if not equal to 0, fall through otherwise | convert to zero
++    # increment | no-op
{0//  # output | push left

मैंने 0झूठा होने के लिए और सत्यवादी होने के लिए लिया है 1, हालांकि इसके लिए कोई वास्तविक कारण नहीं है क्योंकि मारबेलस वास्तव में एक है। अधिक Marbelousy {0सच और {>झूठ के लिए उत्पादन होगा । यह इस तरह दिखेगा:

}0
--
??
=0{>
{0

लेकिन मुझे यकीन नहीं है कि यह मान्य है।


मैं इस पर एक मेटा चर्चा के लिए तैयार हूँ। मेरे विचार का लघु संस्करण: किसी भिन्न आउटपुट के मान को आउटपुट करना किसी अन्य भाषा में अलग आउटपुट ट्यूपल्स के बराबर है। यदि (nil, 1) और (1, nil) किसी अन्य भाषा में आपके सत्य और गलत मूल्य हो सकते हैं, तो Marbelous में {0 बनाम {} की अनुमति दी जानी चाहिए। PS: आपका {> संस्करण बाहर नहीं निकलेगा क्योंकि आप कभी भी अन्य आउटपुट नहीं भरते हैं।
Sparr

@ निष्क्रियता के कारण यह बाहर निकल जाएगा, नहीं?
ओवरएक्टर

आप सही हे। मुझेमूक होने का अनुभव हो रहा है।
स्पैर

6

एपीएल, 6 3 बाइट्स

+=?

यह एक फ़ंक्शन ट्रेन है जो पूर्णांक लेती है और 1 या 0 (एपीएल का सच / गलत) लौटाती है। हम उपयोग करने वाले इनपुट से 1 से एक यादृच्छिक पूर्णांक उत्पन्न करते हैं ?, फिर जांचें कि क्या इनपुट उस पूर्णांक के बराबर है। यह सच के 1 / इनपुट संभावना में परिणाम है।

थॉमस Kwa के लिए धन्यवाद 3 बाइट्स बचा लिया!


@ThomasKwa मैंने किसी प्रकार की ट्रेन के बारे में सोचा, लेकिन क्या वास्तव में "नामित फ़ंक्शन" के रूप में गिना जाता है यदि असाइन किया गया है? मुझे लगता है कि "नाम" वाला हिस्सा मुझे यहाँ फेंक रहा है क्योंकि यह एटिपिकल है।
एलेक्स ए।

@ThomasKwa गाड़ियों का असाइनमेंट (और व्युत्पन्न कार्य) अन्य सभी असाइनमेंट के समानांतर है।
अद्म

@NBZ आप समानांतर से क्या मतलब है?
lirtosiast

@ThomasKwa समतुल्य; किसी अन्य फ़ंक्शन असाइनमेंट की तरह व्यवहार करना।
Adám

मैं '+' के बजाय प्रयोग करूँगा क्योंकि +इसका अर्थ है जटिल संख्याओं के लिए संयुग्म। बेशक यह यहाँ कोई फर्क नहीं पड़ता, और +पारंपरिक पहचान (नो-ऑप) फ़ंक्शन है, लेकिन अब हमारे पास (समान) है। स्केलर्स के लिए अन्य नो-ऑप्स हैं: (मटेरिअल), (पिक), (एनक्लोज), (स्प्लिट ), (यूनिक), (एनलिस्ट), ,(रिवेल), (टेबल), (रिवर्स), (रिवर्स ) पहले), और (स्थानांतरण)। कुछ स्केलर को वेक्टर या मैट्रिक्स में बदलते हैं।
Adám

6

प्लैटिपार , 3 बाइट्स

#?!

#?एक यादृच्छिक संख्या प्राप्त होती है [0,n)जहां nइनपुट होता है। !रिटर्न trueयदि संख्या पहले यह है 0, और यह देता है false

इस प्रश्न के पूछे जाने से पहले हाल ही में लागू की गई अधिक विशेषताओं का उपयोग करना (लेकिन दुर्भाग्य से मेरे लिए प्रतिबद्ध नहीं था) मैं ~! इसे ऑनलाइन प्रयास करके 2 से नीचे ला सकता हूं !


5

जावा, 43 बाइट्स

boolean b(int a){return a*Math.random()<1;}

1
a->a*Math.random()<1छोटा है।
नूम्बरन

"जावा 7 या पूर्ववर्ती" निर्दिष्ट करना चाहिए।
corsiKa

@corsiKlauseHoHoHo यह जावा 8 में भी काम करता है
SuperJedi224

1
बेशक यह करता है - लेकिन यह जावा 8 के लिए गोल्फ नहीं है, जो अंतरिक्ष को बचाने के लिए लैम्ब्डा का उपयोग करेगा। उस तर्क से, सभी जावा उत्तर भी ग्रूवी उत्तर हैं, लेकिन ग्रूवी हमेशा समान या छोटे होते हैं क्योंकि इसमें ऐसे शॉर्टकट होते हैं जो जावा नहीं करता है।
corsiKa

5

सी, 24 बाइट्स

f(n){return!(rand()%n);}

मैंने पहले 4 पात्रों को हटाते हुए ओपी के संपादन को वापस ले लिया है। बाइट्स कम होना अच्छा है, लेकिन मेरे returnबिना, बिना f(n)किसी मतलब के होने का कोई मतलब नहीं है।
लेवल रिवर सेंट

1
@insertusernamehere rand()%nश्रेणी में एक यादृच्छिक संख्या प्राप्त करने का एक मानक तरीका है 0..n-1। आप सही हैं, यह nबहुत छोटे होने पर निर्भर करता है RAND_MAXलेकिन nप्रश्न में उल्लिखित के लिए कोई ऊपरी सीमा नहीं है । एक वैकल्पिक दृष्टिकोण nRAND_MAX से सभी नंबरों पर एक अस्वीकृति और पुन: रोल करना होगा, लेकिन यह छोटे रूप से निराशाजनक रूप से अक्षम होगा n
लेवल रिवर सेंट

5

> <>, 27 + 3 के लिए -v = 30 बाइट्स

यहाँ एक गैर-समान-सब-समाधान है जहाँ मैं N को 0 या 1 के 15876 रैंडम पिक्स का योग देता हूँ:

0"~":*>:?vr%0=n;
1-$1+$^-1x

N को -v फ्लैग के साथ स्टैक पर इनपुट होना चाहिए, आउटपुट झूठी के लिए 0 और सत्य के लिए 1 है।

एक बहुत चालाक और समान समाधान जो 1/2 ^ N के बदले काम करता है:

4{:?!v1-}:">"$2p:"x"$3p:"^"$4p1+:">"$3p1+!
   ^1<
0n;
1n;>
 

इनपुट 3 के लिए आपको 1 और 7/8 के 0 मिलने के 1/8 मौके मिले हैं।

स्पष्टीकरण:

मैं x4 वीं पंक्ति पर जितना आवश्यक हो उतनी ही xअपील करता हूं और उन्हें चारों ओर से दिशाओं से घेरता हूं ताकि केवल दो ही रास्ते हों : या तो फाल्सी आउटपुट या अगला x। मैं गिराx सही दिशा में जाते हैं, तो अंतिम सत्य मार्ग पर जाएगा।

N = 5 के लिए उदाहरण के लिए, अंतिम कोडस्पेस निम्न है:

4{:?!v1-}:">"$2p:"x"$3p:"^"$4p1+:">"$3p1+!
   ^1<
0n; > > > > >
1n;>x>x>x>x>x>
    ^ ^ ^ ^ ^

हालांकि यह सच है कि आप मनमानी एन के लिए एक पूर्ण वितरण नहीं प्राप्त कर सकते हैं, न ही किसी और को PRNG का उपयोग कर सकते हैं। आप यादृच्छिक बिट्स का एक गुच्छा प्राप्त करने के लिए कुछ बार एक्सए के माध्यम से लूप कर सकते हैं, उन्हें एक इंट I में इकट्ठा कर सकते हैं, फिर अपने यादृच्छिक मूल्य के रूप में I% N का उपयोग कर सकते हैं।
Sparr

@ शेपर ने मेरे जवाब को संपादित किया, लेकिन मुझे ऐसा लगता है कि बड़ी संख्या में पुनरावृत्ति इसके परिणामस्वरूप पूर्णांक को 'औसत' कर देगी, जिससे आउटपुट बहुत अधिक हो जाएगा (iterNum/2)%N। मुझे नहीं लगता कि कम संख्या का उपयोग करना एक समाधान होगा। क्या मैं शायद आपको बहुत समझ नहीं पाया, या आपके पास समाधान को बेहतर बनाने के लिए कोई और विचार होगा?
एरोन

15000 बिट्स को एक साथ जोड़ने के बजाय, सिर्फ 32 बिट्स का उत्पादन करें और उन्हें संक्षिप्त करें, जिससे आप समान रूप से वितरित 32-बिट यादृच्छिक पूर्णांक प्रदान करते हैं। आधुनिक
स्पियर

@Srr कि वास्तव में बेहतर लगता है, भले ही मुझे पता नहीं क्यों;) कि बहुत अधिक बाइट खर्च होंगे (> <> बाइट संचालन और आधार रूपांतरण के लिए बेकार है), लेकिन मैं आज शाम को अपना जवाब बदल दूंगा (CEST)।
आरोन

आप बिट्स को दो से गुणा करके जोड़ सकते हैं: आर = 0; for (0..32) r = r * 2 + रैंडबिट;
शुक्राणु

4

गणितज्ञ, १ 18 १६ बाइट्स

#RandomReal[]<1&

मूल समाधान। अनाम Function[0, 1) में एक यादृच्छिक संख्या बनाता है, इसे अपने तर्क से गुणा करता है, और जांचता है कि क्या यह अभी भी 1 से कम है।


4

पायथन, 42 बाइट्स

import random
lambda n:1>random.random()*n

संपादित करें : time.time()वितरण के कारण उत्तर हटा दिया गया ।


2
के लिए random, यह from random import*बचाने के लायक है random.timeहालांकि इसके लिए नहीं ।
xnor

1
मोडुलो डिवीजन द्वारा उत्पन्न रैंडम संख्या समान रूप से वितरित नहीं की जाती है
ट्रांग ओउल

@ ट्रांगऑल यह एक अच्छी बात है; बड़े nप्रभाव के लिए ध्यान देने योग्य हो सकता है। मुझे लगता है कि 1>time.time()%1*nकाम कर सकता है।
lirtosiast

@TrangOul मुझे लगता है कि आप randसी और time.timeपायथन में अंतर जानते हैं ... उत्तरार्द्ध की एक स्पष्ट विशेषता यह है कि यह वर्तमान समय को लौटाता है , जो अबाधित है, ताकि time.time()%nएक समान वितरण हो (लंबे समय से अधिक समय तक) किसी के लिए n
user253751

4

TeaScript , 3 बाइट्स

!N×

इसे यहाँ आज़माएँ।

व्याख्या

 N  maps to Math.rand which is a utility function that returns an integer
    between `arg1` and `arg2` or `0` and `arg1` if only one argument is
    provided.
  × is expanded to `(x)`, where `x` is initialised with the value provided
    in the input boxes; × represents byte '\xd7'
!   negate the result, 0 results in true, anything else false

1
सात बाइट्स 6 बाइट्स को कैसे जोड़ता है? और क्या (R) a (सिंगल बाइट) ANSI चार है?
12

@NBZ, हाहा! मुझे लगता है कि मैंने झूठ बोला था ... मैं हैंगओवर को दोषी ठहराता हूं ... मैं अब अपडेट करूंगा क्योंकि मैंने तंत्र को एक और अधिक सरल में बदलने जा रहा हूं जिसे मैंने देखा है! इस वर्तमान संस्करण में ®चार का प्रतिनिधित्व करता है '\xae'तो बस एक बाइट है। :)
डोम हेस्टिंग्स

4

फजी ऑक्टो गुआकामोल, 10 बाइट्स

^-!_[0]1.|

स्पष्टीकरण:

^-!_[0]1.|

^          # Get input.
 -         # Decrement, so we can append <ToS> zeros and a 1 to the stack.
  !        # Set loop counter.
   _       # Pop, since we are done with the input.
    [      # Start loop
     0     # Push 0
      ]    # End for loop. We have pushed input-1 0s to the stack.
       1   # Push a single 1 to the stack.
        .  # Switch stacks
         | # Pick a random item from the inactive stack, which has n-1 falsy items and 1 truthy item, so the truthy probability is 1/n.
           # (implicit output)

3

पर्ल 6 ,  10   8 बाइट्स

!(^*).pick
#  ^- The * is the argument

यह कोड 0 अप-टू से इनपुट को छोड़कर रेंज बनाता है *। यह तब pickयादृच्छिक और !रिटर्न पर एक होता है जब यह प्राप्त होता है 0

1>*.rand
# ^- The * is the argument

यह इनपुट लेता है *और इसे एक यादृच्छिक संख्या से गुणा करता है, 0..^1फिर से सही होने पर लौटाता है 1

# store it in a lexical code variable for ease of use
my &code = 1>*.rand;

die "never dies here" unless code 1;

for ^8 { say code 4 }
False
True
False
False
False
True
False
False

3

प्रोलोग (एसडब्ल्यूआई), 24 बाइट्स

कोड:

p(N):-X is 1/N,maybe(X).

हो सकता है (+ P) एक ऐसा फंक्शन है जो प्रायिकता P के साथ सफल होता है और प्रायिकता 1-P के साथ विफल होता है

उदाहरण:

p(4).
false

p(4).
false

p(4).
true

3

पॉवरशेल, 25 बाइट्स

!(Random -ma($args[0]--))

Get-Randomसमारोह जब किसी दिए गए -Maximum पैरामीटर nश्रृंखला से एक मान देता है [0,n)। हम अपने इनपुट से 1 घटाकर इसका लाभ उठाते हैं $args[0], इसलिए हम ठीक से अनुक्रमित होते हैं, और एक यादृच्छिक मूल्य प्राप्त करते हैं। ठीक 1/nसमय के साथ, यह मान होगा 0, इसलिए जब हम बूलियन-इसके साथ नहीं !लौटेंगे True। दूसरी बार लौटेंगे False


3

जे, 3 बाइट्स

0=?

यह एक राक्षसी कांटा है जो दाईं ओर एक तर्क लेता है। इसी तरह, एपीएल को? एक यादृच्छिक पूर्णांक उत्पन्न करता है; हालांकि, जे सरणियां शून्य-आधारित हैं। इसलिए हम इनपुट के बजाय 0 से तुलना करते हैं।



3

PHP, 22 बाइट्स

<?=2>rand(1,$argv[1]);

nकमांड लाइन से पढ़ता है, जैसे:

$ php probability.php 4

आउटपुट ( falsePHP में एक खाली स्ट्रिंग के लिए डाला जाता है) या 1(मामले में true)।


3

सी#, 56 45 बाइट्स

के लिए धन्यवाद, यह अब 45 है, Pinkfloydx33।

bool b(int n){return new Random().Next(n)<1;}

पुरानी 56 बाइट्स

रैंडम पॉजिटिव पूर्णांक बड़े या 0 के बराबर और इससे छोटा nऔर यदि यह 1तुलनात्मक परिणाम से छोटा है और चेक करता है, उत्पन्न करता है।

bool a(int n){Random r=new Random();return r.Next(n)<1;}

1
PPCG में आपका स्वागत है! दुर्भाग्य से, यह सबमिशन काम नहीं करता है, क्योंकि Random.Next(k)एक पूर्णांक kऐसे ही देता है 0 <= k < n। हालत को बदलने के लिए <1, यह सही हो जाएगा। इसके अलावा, एक लैम्ब्डा अभिव्यक्ति का उपयोग आपके कोड को छोटा कर सकता है।
मेगो

@Mego ज़रूर, टिप्पणी के लिए धन्यवाद। मैंने इसे बनाया है 0 < k <= nऔर यह आपके जैसा कहा जाना चाहिए। मैं इसे तुरंत ठीक करूंगा।
इवान

2
उपयोग var rतीन बचाता है। या यदि c # 6, bool a(int n) => new Random().Next(n)<1;41 के लिए। हालांकि यह सुनिश्चित नहीं है कि Randomप्रति पद्धति कॉल को प्रारंभ करने से वितरण ठीक से काम करेगा?
Pinkfloydx33

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