एक वितरण आरेख ड्रा!


12

चुनौती

आपको इनपुट के रूप में तीन पूर्णांक दिए गए हैं - min_value, max_value, sample_sizeकि आप अपने उत्तर को सरणी या कई मापदंडों के रूप में पास कर सकते हैं।

आपका कार्य किसी भी सुविधाजनक प्रारूप में एक आरेख को आउटपुट करना है , जो (min_value, max_value)सीमा में संख्याओं की आवृत्ति दिखाता है जब सीमा में एक यादृच्छिक संख्या (min_value, max_value)को उठाया जाता sample_sizeहै। आपके उत्तर के भीतर यादृच्छिक संख्या अनुक्रम उत्पन्न किया जाना चाहिए।

बड़ी रेंज और नमूना आकार के साथ, आप अपने आरेख के उपयोग के चरणों को बदलने के लिए स्वतंत्र हैं, जब तक कि प्रतिनिधित्व सटीक रहता है।

उदाहरण

साथ [1, 5, 10]इनपुट के रूप में:

o o o x o
x o x x x
x x x x x
1 2 3 4 5

साथ [1, 100, 15]के रूप में इनपुट (10 के चरणों में है, इसलिए 00 से पता चलता है 1-9, 10 से पता चलता है 10-19, आदि):

xx oo oo xx oo xx oo oo oo oo
xx oo oo xx oo xx xx oo oo oo
xx xx oo xx xx xx xx xx xx oo
00 10 20 30 40 50 60 70 80 90

स्कोरिंग

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


1
मुझे लगता है कि हमें आवश्यक से अधिक ऊंचाई के साथ तालिकाओं को आउटपुट करने की अनुमति नहीं है? अपने [1,5,10]उदाहरण के लिए, क्या ऊंचाई हो सकती है 10? तो कॉलम 4 इस तरह दिखाई देगा (क्षैतिज रूप से बाएं-से-दाएं के बजाय लंबवत ऊपर से नीचे) oooooooxxx4:।
केविन क्रूज़सेन

6
मुझे चौड़ाई की एक सीमा का चयन करने से रोकने के लिए क्या है b-a? यह काफी सुविधाजनक प्रारूप है ...
Giuseppe

1
Giuseppe का अर्थ है कि एक सीमा के लिए a...b, आरेख में एक एकल बिन होता है जो संपूर्ण सीमा को कवर करता है, जिसके परिणामस्वरूप नमूनों की संख्या के बराबर ऊँचाई के साथ एक बार होता है।
स्टू ग्रिफिन

1
क्या हमें हिस्टोग्राम को क्षैतिज रूप से खींचने की अनुमति है? इसके अलावा, क्या मूल्यों को सीमा में समान रूप से चुना जाना है, या क्या कोई वितरण है जहां सभी परिणाम संभव हैं?

1
@ वितरण के बारे में जानकारी: सर्वसम्मति यह है कि जब तक ओपी ने इसे निर्दिष्ट नहीं किया है, तब तक इसे समान नहीं होना चाहिए।
स्टिव ग्रिफ़िन

जवाबों:


3

जेली , 13 बाइट्स

Ṫɓr/;"xẊĠ>ʋ¥G

एक बहुत ही सुविधाजनक प्रारूप का उपयोग करता है :

  • बाईं अक्ष पर मान प्रिंट करता है
  • 0वितरण पिक्सेल (जैसे xs) और 1पृष्ठभूमि पिक्सेल (जैसे os) के रूप में उपयोग करता है
  • "पिक्सेल" के बीच कई क्षैतिज स्थानों का उपयोग करता है क्योंकि सीमा में अधिकतम लंबाई की संख्या में वर्ण होते हैं (जैसे -23 की लंबाई 3 है, जबकि 23 की लंबाई 2 है)।

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

नोट: यदि इनपुट के लिए एक सरणी होना जरूरी नहीं था तो यह दो तर्क लेने वाले 11 बाइट्स होंगे , [from, to]और sampleSizeबस के साथ r/;"xẊĠ>ʋ¥G


मुझे लगता है कि यह सुविधाजनक स्वरूपण भत्ता 4 बाइट्स के लिए थोड़ी बहुत दूर ले जा सकता है:

Ṗ;1K

यह विचार का उपयोग कर रहा है (जिसे संबोधित किया जाना चाहिए) Giuseppe द्वारा टिप्पणियों में एक एकल बिन के साथ पहचाने गए fromऔर toएक अंतरिक्ष द्वारा अलग किए गए, एक अन्य स्थान जो अक्ष का प्रतिनिधित्व करता है और एक एकल 1100% की ऊंचाई का प्रतिनिधित्व करता है।

... या सिर्फ Ṗ12 बाइट्स के लिए!


10

ऑक्टेव , 34 32 बाइट्स

@(a,b,n)hist(--a+randi(b-a,n,1))

TIO पर काम नहीं करता है, लेकिन Octave-online.net पर काम करता है ।

यह एक हिस्टोग्राम (बार चार्ट) बनाता है जो इस तरह दिखता है:

यहाँ छवि विवरण दर्ज करें

मैं कहूंगा कि "किसी भी सुविधाजनक प्रारूप" के रूप में गिना जाता है।

यदि गैर-शून्य डिब्बे दिखाए जाने चाहिए , तो इसे 38 बाइट में हल किया जा सकता है:

@(a,b,n)hist(--a+randi(b-a,n,1),a+1:b)

मैंने शून्य ऊंचाई के डिब्बे के बारे में स्पष्टीकरण के लिए कहा - यह उन्हें यह दिखाने में विफल रहता है कि क्या वे सभी गैर-शून्य लोगों की तुलना में कड़ाई से कम या सख्ती से अधिक हैं ( f(1,5,1)उदाहरण के लिए व्यवहार दिखाएंगे)।
जोनाथन एलन

1
मैं यह बताना चाहता हूं कि यह निश्चित रूप से हिस्टोग्राम नहीं है , बल्कि यह एक बार चार्ट है (जो एक ही चीज नहीं है, बिल्कुल भी नहीं)।
caird coinheringaahing

2
@cairdcoinheringaahing उन विकी पृष्ठों के माध्यम से स्किमिंग करते हुए मैं यह नहीं देखता कि यह हिस्टोग्राम नहीं होगा। यह समझाने की परवाह करें कि आपको इसके बजाय बार चार्ट क्यों लगता है?
Imus

@ इस्मस एक हिस्टोग्राम एक विशेष प्रकार का बार चार्ट है। मैं उस बिंदु को मानता हूं जो कि केर्ड कॉइनरहाइडिंग करना चाहता है, यह केवल हिस्टोग्राम के रूप में योग्य है यदि डिब्बे यादृच्छिक चर के वास्तविक वितरण का अनुमान लगाने के लिए पर्याप्त बड़े हैं (जो इस मामले में वास्तव में पूरी तरह से सपाट है)। केवल 10 के नमूने के आकार के लिए एक उचित हिस्टोग्राम बनाना संभव नहीं है।
चालू करना बंद कर दिया

6

आर , 36 बाइट्स

function(a,b,n)stem(sample(a:b,n,T))

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

आह। एक तना।

दूसरे वर्ष के विश्वविद्यालय के छात्रों के लिए अस्तित्व का प्रतिबंध [ कुछ अध्ययन के इस विशिष्ट क्षेत्र] के लिए सांख्यिकी का परिचय लेने वाले छात्रों को पता नहीं है कि वे किस बारे में बात कर रहे हैं, लेकिन अभी भी लगता है कि स्टेमप्लेट एक अच्छा विचार है क्योंकि यह अभी भी 14 वें संस्करण में है 1983 में चौथे संस्करण के प्रकाशित होने के बाद से वे पाठ्यपुस्तक का उपयोग कर रहे थे।


5

चारकोल , 25 बाइट्स

≔…·θηθ≔Eζ‽θηEθ№ηι↖←E⮌θ⮌Iι

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

≔…·θηθ

वितरण की एक समावेशी श्रेणी बनाएँ।

≔Eζ‽θη

श्रेणी को वांछित संख्या का नमूना दें।

Eθ№ηι

नमूना में प्रत्येक श्रेणी की संख्या की गणना और प्रिंट करें।

↖←E⮌θ⮌Iι

लेबल प्रिंट करें।


3

अजगर 2 , 115 बाइट्स

from random import*
a,b,n=input()
r=range(a,b+1)
s=sample(r*n,n)
for v in r:print'%%0%dd'%len(`b`)%v,s.count(v)*'x'

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


पायथन 2 , 164 बाइट्स

स्तंभ-आधारित उत्पादन।

from random import*
a,b,n=input()
r=range(a,b+1)
s=sample(r*n,n)
d=len(`b`)
while n:n-=1;print' '.join(d*'ox'[s.count(v)>n]for v in r)
for v in r:print'%%0%dd'%d%v,

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


3

जावा 11, 184 168 बाइट्स

(m,M,s)->{int a[]=new int[M],q=M;for(;s>0;q=M)if((q*=Math.random())>m-2){a[q]++;s--;}for(;m<=M;)System.out.printf("%0"+(M+"").length()+"d%s%n",m,"*".repeat(a[m++-1]));}

इसे ऑनलाइन आज़माएं। (नोट: उसी बाइट-काउंट के लिए String.repeat(int)अनुकरण किया जाता है repeat(String,int), क्योंकि जावा 11 अभी तक TIO पर नहीं है।)

स्पष्टीकरण:

(m,M,s)->{                         // Method with three integer parameters & no return-type
                                   // (`m` = min_value; `M` = max_value; `s` = sample_size)
  int a[]=new int[M],              //  Integer-array, filled with `M` amount of 0s
      q=M;                         //  Temp integer for the random value, set to `M`
  for(;s>0;                        //  Loop as long as `s` isn't 0 yet:
      q=M)                         //    Reset `q` back to `M` after every iteration
    if((q*=Math.random())          //   Pick a random integer in the range [0, `M`)
       >m-2){                      //   If this random integer is larger than `m-2`:
      a[q]++;                      //    Increase the value at that this random index by 1
      s--;}                        //    And decrease `s` by 1
  for(;m<=M;)                      //  Loop in the range [`m`, `M`]
    System.out.printf(             //   Print with trailing new-line
      "%0"+(M+"").length()+"d%s%n",//   and leading zeros if necessary:
      m,                           //    The number
      "*".repeat(a[m++-1]));}      //    appended with "*" repeated the amount of times
                                   //    specified in the random array at index `m-1`

2

आर , 52 बाइट्स

function(a,b,n)table(cut(sample(a:b,n,T),a:(b+1)-1))

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

एक रिटर्न tableके साथ आवृत्तियों के namesद्वारा चयनित आधा खुला अंतराल के बराबर cutहै, इसलिए (0,1], (1,2], (2,3], और इसके आगे। अधिक उचित बाइनिंग का चयन करने के लिए कोई प्रयास नहीं करता है।


function(a,b,n)hist(sample(a:b,n,T))प्रश्न की आवश्यकताओं को पूरा नहीं करेगा ?
एन जी एम

@ngm मुझे लगता है ... मैं एक पाठ आउटपुट करना चाहता था क्योंकि चुनौती अंतरंग लग रही थी, लेकिन आप इसे स्वयं पोस्ट करने से अधिक स्वागत करते हैं
Giuseppe

2

रूबी, 135 बाइट्स , 117 बाइट्स

d=->(m,n,s){p=(m..n);t=(1..s).map{rand(p)};p.map{|h|g=t.count(h);"#{h}-#{'x'*g}#{'o'*(t.map{|e|t.count(e)}.max-g)}"}}

Ungolfed:

d =-> (m,n,s) {
  p = (m..n)
  t = (1..s).map{rand(p)}
  p.map{ |h|
    g = t.count(h)
    "#{ h }-#{ 'x' * g }#{ 'o' * (t.map{|e| t.count(e) }.max - g) }"
  }
}

puts d.call(1,5,10)

इसे ऑनलाइन आज़माएं! - मामले में किसी और के रूप में मैं यह परीक्षण करना चाहता था!
डोम हेस्टिंग्स



1

जावास्क्रिप्ट, 239

मुझे इस बारे में खेद है, लेकिन चर को केवल विली-निली नाम दिया गया था। वैसे भी, सवाल ने किसी भी सुविधाजनक प्रारूप को कहा , इसलिए यह फ़ंक्शन एक बग़ल में ग्राफ़ देता है

f=>{x=Math;z=Array;q=_=>x.floor(x.random()*(f[1]-f[0]))+f[0];r=z(f[1]-f[0]).fill(0);z(f[2]).fill``.forEach(_=>r[q()-1]++);u=`${f[1]}`.length;return r.map((e,i)=>`${`${i}`.padEnd(u)}${" x".repeat(e)}`.padEnd(x.max(...r)*2+u," o")).join`\n`}

1

जाप -R, 14 बाइट्स

ऑर्डर अधिकतम, न्यूनतम, आकार में इनपुट लेता है। चार्ट को क्षैतिज रूप से आउटपुट करता है।

õV
öW
Ë+QpVè¥D

कोशिश करो


व्याख्या

             :Implicit input of integers U=max_value, V=min_value & W=sample_size
õV           :Range [U,V]
\n           :Reassign to U
öW           :Get an array of W random elements from U
\n           :Reassign to V
Ë            :Map each integer D in U
 +           :  Append
  Q          :  Quotation mark
   p         :  Repeat
    Vè       :   Count the elements in V
      ¥D     :    That equal D
             :Implicitly join with newlines and output.

0

पायथ, 19 बाइट्स

JmOK}FPQeQVK,N*/JNd

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

व्याख्या

JmOK}FPQeQVK,N*/JNd
   K}FPQ             Get the inclusive range between the first two inputs as K.
JmO     eQ           Get <last input> random elements as J.
          VK         For each value in the range...
            ,N       ... output a list of the value...
              */JNd  ... and spaces equal to the count in J.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.