03-07-2011, 15:12
|
|
מנהל משבראש, בלשנות, תכנות ויהדות
|
|
חבר מתאריך: 04.06.06
הודעות: 33,130
|
|
|
הו, שיטת מונטה קרלו
הטעות היא באופן השימוש בפונקציית rand().
הפונקציה הזו ב־C אינה מחזירה שבר עשרוני, אלא שלם, מ־0 עד לקבוע שלם שמוגדר ב־stdlib.h ונקרא RAND_MAX.
(לדוגמא אצלי הוא: #define RAND_MAX 0x7FFF)
כדי לקבל שבר בין 0 ל־1 אתה צריך משהו בסגנון:
קוד:
rand()/((double)RAND_MAX + 1)
(עריכה: כדי להשתמש בקבוע צריך כמובן לכלול גם את הספרייה stdlib.h)
ובעיה אחרונה יש בחישוב של הפאי, חילקת שלם גדול בשלם קטן, ולכן ברור שתמיד תקבל 0.
היית צריך לבצע קאסטינג לעשרוני על אחד מהם:
קוד:
pie = 4*((double)counter/throws);
נערך לאחרונה ע"י ShoobyD בתאריך 03-07-2011 בשעה 15:21.
|