สถิติปลอม


27

หากคุณจะคิดค้นข่าวปลอมคุณจะต้องสร้างข้อมูลเพื่อสำรองข้อมูล คุณต้องมีข้อสรุปไว้ล่วงหน้าแล้วและคุณต้องการสถิติบางอย่างเพื่อเสริมการโต้แย้งของตรรกะที่ผิดพลาดของคุณ ความท้าทายนี้จะช่วยคุณได้!

รับตัวเลขสามตัว:

  • N - จำนวนจุดข้อมูล
  • μ - ค่าเฉลี่ยของจุดข้อมูล
  • σ - ส่วนเบี่ยงเบนมาตรฐานของจุดข้อมูลโดยที่μและσกำหนดโดย:

    ป้อนคำอธิบายรูปภาพที่นี่

ออกรายการเรียงลำดับของตัวเลข𝑥 ฉันซึ่งจะสร้างให้N , μและσ

ฉันจะไม่จู้จี้จุกจิกมากเกินไปเกี่ยวกับรูปแบบ I / O แต่ฉันคาดหวังว่าทศนิยมบางประเภทสำหรับμ , σและจุดข้อมูลเอาต์พุต อย่างน้อยที่สุดควรสนับสนุนตัวเลขที่มีนัยสำคัญอย่างน้อย 3 รายการและขนาดอย่างน้อย 1,000,000 การลอยตัวของ IEEE นั้นใช้ได้

  • Nจะเป็นจำนวนเต็มเสมอโดยที่ 1 ≤ N ≤ 1,000
  • μสามารถเป็นจำนวนจริงได้
  • σจะเป็น≥ 0 เสมอ
  • จุดข้อมูลสามารถเป็นจำนวนจริงใด ๆ
  • ถ้าNคือ 1 ดังนั้นσจะเป็น 0 เสมอ

โปรดทราบว่าอินพุตส่วนใหญ่จะมีเอาต์พุตที่เป็นไปได้มากมาย คุณจะต้องให้ผลลัพธ์ที่ถูกต้องหนึ่งรายการเท่านั้น ผลลัพธ์อาจถูกกำหนดหรือไม่ได้กำหนดไว้

ตัวอย่าง

Input (N, μ, σ) -> Possible Output [list]

2, 0.5, 1.5 -> [1, 2]
5, 3, 1.414 -> [1, 2, 3, 4, 5]
3, 5, 2.160 -> [2, 6, 7]
3, 5, 2.160 -> [8, 4, 3]
1, 0, 0 -> [0]

6
ควรเพิ่มอินพุตที่เป็นความจริง / เท็จสำหรับค่า pดังนั้นเราจะต้องสร้างข้อมูลที่มีความสัมพันธ์หรือไม่สัมพันธ์กันทั้งในการสำรองข้อมูลปลอมหรือปลอมอาฮาฮาปลอมแปลง
Magic Octopus Urn

1
อะไร+veและ-veหมายความว่าอย่างไร
CG

@ChelseaG ตัวย่อสำหรับในเชิงบวกและเชิงลบ ฉันแก้ไขเพื่อชี้แจง
Digital Trauma

เมื่อ N = 1 σจะเป็น 0 เสมอเพื่อให้เป็นไปได้หรือไม่
xnor

1
จริงๆแล้วพวกเราควรใช้ส่วนเบี่ยงเบนมาตรฐานตัวอย่างที่ถูกต้องและไม่นำไปใช้กับอินพุตด้วย N = 1
Jonathan Allan

คำตอบ:


8

Pyth , 44 35 34 ไบต์

? eA.DhQ2 + eQ * G, -eQJ * E @ hc1thQ2 + eQJ * G, -eQKE + eQK 
.N? eA.DN2+T*G+LT_B*Y@hc1tN2 * G+ LT_BY
.N? eA.DN2+T*G+LT_B*Y@cNtN2*G+LT_BY

ลองออนไลน์! (รหัสข้างต้นกำหนดฟังก์ชั่น:.*ถูกผนวกเข้ากับลิงก์เพื่อเรียกใช้ฟังก์ชัน)

คณิตศาสตร์

สิ่งนี้สร้างข้อมูลแบบสมมาตร ถ้าNเป็นเช่นนั้นข้อมูลก็จะเป็นค่าเฉลี่ยบวกหรือลบส่วนเบี่ยงเบนมาตรฐาน อย่างไรก็ตามถ้าNเป็นเรื่องแปลกเราก็เปิดเวิร์มกระป๋องเนื่องจากค่าเฉลี่ยจะต้องนำเสนอเพื่อให้ข้อมูลมีความสมมาตรดังนั้นความผันผวนจึงต้องคูณด้วยปัจจัยบางอย่าง

ถ้าnเป็นเช่นนั้น

  • μ+σครึ่งหนึ่งของข้อมูลที่มี
  • μ-σครึ่งหนึ่งของข้อมูลที่มี

ถ้าnเป็นคี่

  • μหนึ่งคือตัวเลข
  • μ+σ*sqrt(n/(n-1))น้อยกว่าครึ่งหนึ่งของข้อมูลที่มี
  • μ-σ*sqrt(n/(n-1))น้อยกว่าครึ่งหนึ่งของข้อมูลที่มี

6

MATL , 22 ไบต์

ขอบคุณ@DigitalTraumaสำหรับการแก้ไข

:t&1Zs/tYm-*+tZN?3G9L(

Nเพื่อป้อนข้อมูลเป็น: σ, μ,

ลองออนไลน์!

หรือดูรุ่นที่แก้ไขซึ่งคำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของข้อมูลที่ผลิตเช่นเดียวกับการตรวจสอบ

คำอธิบาย

รหัสแบ่งออกเป็นสี่ส่วน:

  1. :สร้างอาร์เรย์[1 2 ... N]ที่Nใช้เป็นอินพุตโดยนัย

  2. t&1Zs/หารตัวเลขเหล่านั้นด้วยค่าเบี่ยงเบนมาตรฐานเชิงประจักษ์ (คำนวณการทำให้เป็นมาตรฐานโดยN) และtYm-ลบค่าเฉลี่ยเชิงประจักษ์ของค่าผลลัพธ์ เพื่อให้แน่ใจว่าผลนี้มีการทดลองค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานเชิงประจักษ์01

  3. *คูณด้วยσและ+เพิ่มμทั้งสองนำมาเป็นอินพุตโดยปริยาย

  4. tZN?x3Gจัดการคดีพิเศษที่N = 1, สำหรับการส่งออกซึ่งควรจะσ = 0 μถ้านี่เป็นกรณีที่แล้วเบี่ยงเบนมาตรฐานเชิงประจักษ์คำนวณในขั้นตอนที่สองคือ0ส่วนที่ให้infและคูณด้วยในขั้นตอนที่สามให้σ NaNดังนั้นสิ่งที่รหัสไม่คือถ้าอาร์เรย์ที่ได้รับประกอบด้วยทุกNaNค่า (รหัสtZN?) ลบ ( x) และผลักดันการป้อนข้อมูลที่สาม ( 3G) μซึ่งเป็น


4

Pythonขนาด 50 ไบต์

lambda n,m,s:[m+s*(n-1)**.5]+[m-s/(n-1%n)**.5]*~-n

ลองออนไลน์!

ใช้การnแจกแจงองค์ประกอบต่อไปนี้พร้อมค่าเฉลี่ย0และ sdev 1:

  • ด้วยความน่าจะเป็น1/n(เช่น1องค์ประกอบ) เอาต์พุต(n-1)**0.5
  • ด้วยความน่าจะเป็น1-1/n(เช่นn-1องค์ประกอบ) เอาต์พุต-(n-1)**(-0.5)

นี้จะให้ปรับหมายความmและ sdev โดยการเปลี่ยนs x->m+s*xannoyingly, n=1ให้หารด้วยศูนย์ข้อผิดพลาดสำหรับค่าไร้ประโยชน์เพื่อให้เราตัดมันออกไปด้วยการทำ/(n-1%n)**.5ที่มี1%nให้0สำหรับn==1และ1อย่างอื่น

คุณอาจคิดว่า(n-1)**.5สามารถย่อให้สั้นลงได้~-n**.5แต่การยกกำลังเกิดขึ้นก่อน

A defคือหนึ่งไบต์อีกต่อไป

def f(n,m,s):a=(n-1%n)**.5;print[m+s*a]+[m-s/a]*~-n

3

R, 83 62 53 ไบต์

function(n,m,s)`if`(n>1,scale(1:n)*s*sqrt(1-1/n)+m,m)

ถ้า n=1มันส่งคืนm(เนื่องจากscaleจะส่งคืนNA) มิฉะนั้นจะปรับขนาดข้อมูล[1,...,n]ให้มีค่าเฉลี่ย 0 และ (ตัวอย่าง) ส่วนเบี่ยงเบนมาตรฐาน 1 ดังนั้นมันจึงคูณด้วยs*sqrt(1-1/n)เพื่อให้ได้ค่าเบี่ยงเบนมาตรฐานประชากรที่ถูกต้องและเพิ่มmการเปลี่ยนเป็นค่าเฉลี่ยที่เหมาะสม ขอบคุณ Dason ที่แนะนำให้ฉันรู้จักฟังก์ชั่นสเกลและปล่อยไบต์เหล่านั้นทิ้ง!

ลองออนไลน์!


คุณสามารถเพิ่มการทดสอบในTry It Onlineได้หรือไม่เพื่อให้คำตอบของคุณอาจได้รับการยืนยันอย่างง่ายดาย
Digital Trauma

อ๋อ! ให้ฉันสองนาที
Giuseppe

อาจใช้1:nแทนrt(n,n)การบันทึก 4 ไบต์ และscaleฟังก์ชั่นอาจมีประโยชน์
Dason

@Dason - ขอบคุณ! ฉันเรียนรู้เกี่ยวกับscaleสิ่งที่ดี
Giuseppe

1

เยลลี่ , 20 ไบต์

÷_Ḃ$©$*.;N$ṁ®;0ṁ⁸×⁵+

ลองออนไลน์!

โปรแกรมเต็มโดยใช้อาร์กิวเมนต์บรรทัดคำสั่งสามข้อ: n , μ , σ

อย่างไร?

สร้างค่าfloor (n / 2)เท่ากันจากค่าเฉลี่ยและค่าที่ค่าเฉลี่ยถ้าnเป็นเลขคี่ซึ่งค่าเบี่ยงเบนมาตรฐานนั้นถูกต้อง ...

÷_Ḃ$©$*.;N$ṁ®;0ṁ⁸×⁵+ - Main link: n, μ (σ expected as third input, the 5th command argument)
   $                 - last two links as a monad:
 _                   -   n minus:
  Ḃ                  -     n mod 2            i.e. n-1 if n is odd, n if n is even
    ©                - copy value to register
÷                    - n divided by that
       .             - literal 0.5
      *              - exponentiate = (n / (n - (n mod 2))) ^ 0.5
                     -        i.e. 1 if n is even; or (n/(n-1))^0.5 if n is odd
         $           - last two links as a monad:
        N            -   negate
       ;             -   concatenate   i.e. [1,-1] or [(n/(n-1))^0.5,-(n/(n-1))^0.5]
            ®        - recall value from register
           ṁ         - mould the list like something of that length
             ;0      - concatenate a zero
                ⁸    - link's left argument, n
               ṁ     - mould the list like something of length n (removes the zero for even n)
                  ⁵  - fifth command argument, third program argument (σ)
                 ×   - multiply (vectorises)
                   + - add μ (vectorises)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.