Mathcenter Forum

Mathcenter Forum (https://www.mathcenter.net/forum/index.php)
-   คณิตศาสตร์อุดมศึกษา (https://www.mathcenter.net/forum/forumdisplay.php?f=2)
-   -   generate random number ยังไงให้เป็น normal distribution ? (https://www.mathcenter.net/forum/showthread.php?t=4309)

คนบ้า 02 พฤษภาคม 2008 13:41

generate random number ยังไงให้เป็น normal distribution ?
 
ถ้าเป็น mathlab ก็จะมี function randn แล้วเราก็ระบุจำนวนว่าจะเอากี่ตัวเลย

แต่ถ้าจะต้องใช้งานในภาษาซีไม่ทราบว่าต้องทำเช่นไร
ให้ random number ที่เรา generate ขึ้นมา มี mean=0 และ variance=1

:please:


วานผู้รู้ช่วยแนะทีครับ

M@gpie 02 พฤษภาคม 2008 15:01

ต้องการ Random ออกมาเป็น Discrete เหรอครับ มี Algorithm อยู่อันนึง ที่เรียกว่า PRBS (Psudo Random Binary Sequence) ลองหาดูครับ

รู้สึกว่าฟังก์ชัน Rand ในภาษาซีก็จะใช้ Algorithm นี้ในการสุ่มเลข

คนบ้า 03 พฤษภาคม 2008 11:58

ขอบคุณมากครับ

!c]-[!M4ru_1Vg!1V 03 พฤษภาคม 2008 14:57

อยู่ในเรื่องอะไรเหรอครับ งง !!!

คนบ้า 03 พฤษภาคม 2008 22:40

คือที่จริงต้องการจำลองสัญญาณรบกวนแบบ white noise อ่ะครับ

ตอนนี้ยังทำไม่ได้เลยครับ
ลอง generate random number ที่มีค่าอยู่ในช่วง -1 ถึง 1 ออกมาสัก 10000 ตัว
ได้ mean ประมาณ 0 ทุกครั้งอยู่อะครับ
แต่ variance นี่ไม่ใกล้ 1 เลยครับ

ใครพอมีวิธีแนะนำหน่อยครับ

TOP 03 พฤษภาคม 2008 23:15

ลองอ่านเนื้อหาในหน้านี้ Pseudo-random Numbers ตรงส่วนที่เป็น Converting a flat distribution to a Gaussian distribution เพราะฟังก์ชัน random โดยทั่วไปจะเป็น uniform distribution และในหน้านั้นยังมีลิงก์ไปหน้าอื่น ถึงวิธีแปลงไปเป็น distribution อื่นๆด้วย ลองดูนะครับว่าใช้ได้จริงไหม :)

อีกแนวคิดหนึ่งจากจินตนาการล้วนๆ ไม่มีข้อพิสูจน์ทางคณิตศาสตร์ :laugh:
  • ลองสุ่มจำนวนจริงในช่วง $[0,1]$ ค่าที่ได้สมมติเป็นค่า accumulate probability ของ gaussian distribution สมมติว่าคือ $A$
  • หาย้อนกลับไปว่า $x$ คืออะไร , $\displaystyle{\left(\int_{-\infty}^x P(x)\ dx = A\right)}$ , มีสูตรทาง Numerical สำหรับหาค่าย้อนกลับจากพื้นที่ใต้กราฟนะครับ ลองค้นดู
  • ผมได้แต่เดาว่า ถ้าเราสุ่ม $A$ แบบ uniform distribution จะได้ค่า $x$ เกาะกลุ่มกันตรงกลางบริเวณ $[-3,3]$ มากเป็นพิเศษ แต่ไม่แน่ใจว่ามันจะมีสมบัติตามต้องการหรือไม่ ถ้าหากว่ามันมีสมบัติตามต้องการจริง ก็แสดงว่า $x$ เป็น gaussian distribution ตามต้องการ ในกรณีนี้ เราสามารถบีบ $x$ ให้อยู่ในช่วงปิดได้ โดยใช้ค่าของ $\frac{2}{\pi}\arctan x$ ซึ่งจะได้ค่าออกมาในช่วง $[-1,1]$

คนบ้า 15 พฤษภาคม 2008 13:47

ทำได้แล้วครับ ด้วยการช่วยเหลือจากสมาชิก mathcenter ที่นำทางให้

http://u3.upload.sanook.com/A0/b23cb...f7c0aef5ccb24d

โพสต์ไว้ให้เผื่อท่านใดมีปัญหาแบบผมนะครับ :kiki:

Nickname 18 พฤษภาคม 2008 23:10

น่าสนใจมากเลยครับ

คนบ้า 03 ตุลาคม 2008 22:38

มีpmมา ว่าไฟล์เดิมหมดอายุ อัพให้อีกทีครับ (ช้าไปไม่หน่อย 555)

http://www.zabzaa.com/upload/downloa...29normalRAND.c

:)


เวลาที่แสดงทั้งหมด เป็นเวลาที่ประเทศไทย (GMT +7) ขณะนี้เป็นเวลา 13:50

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Modified by Jetsada Karnpracha