שאלה בקשר לאקראיות

K uger

New member
שאלה בקשר לאקראיות

איך המציאו את הפונקציה (לא משנה באיזה שפה) שמגרילה מספר באקראיות? הרי שום דבר בטבע הוא לא אקראי איך לעזאזל עשו את זה?
 

DNile

New member
הם לא.

זה לא באמת מגריל מספר אקראי, זה רק מגריל מספר פסודו-אקראי. הם עשו פונקציה מתמטית שבהנתן קלט כלשהו(שככל שהוא יהיה אקראי יותר, ככה יותר טוב), הוא יוכל לייצר רצף לכאורה אקראי. בכל מקרה, האמירה שלך לגבי זה ששום דבר בטבע אינו אקראי זאת אמירה שגויה לגמריי. לא חסרות תופעות פיסיקליות שהן אקראיות לגמריי, ואם אתה מכיר קצת את תורת הקוונטים, תדע שיש גם דבר שנקרא עקרון אי-הוודאות, שאומר בצורה פשוטה שאתה לא יכול לחזות אירוע כלשהו, אלא רק את הסיכויים שהוא יקרה.
 

vinney

Well-known member
שים לב

אם אתה לא תאתחל את מנגנון המספרים האקראיים (או תאתחל אותו עם אותו מספר) אתה תקבל תמיד אותו רצף. לכן עושים srand עם פרמטר time(NULL) כדי שהאיתחול יהיה עם ערך נוכחי של השעון, שמשתנה כל שניה, ומשם הפונקציה מחשבת את רצף המספרים ה"אקראיים".
 

galh

New member
לא אקראי?!

הטבע הוא מאוד אקראי (או לפחות בעל חוקיות שעדיין לא ניתנת להגדרה). בשביל זה ניסחו תיאוריות כמו תורת הכאוס או פיסיקה קוונטית. לגבי הפונקציה. היא לא ממש אקראית. בהנתן seed כלשהוא הפונקציה rand תחזיר לך את אותה סדרה מספרים. למידע על המימוש של הפוקנציה, תסתכל על הקוד של הפונציה rand או איך מימשו בלינוקס את dev/random/. אחרי שתראה את הפונקציה עצמה, תבקש הסבר בפורום מתמטיקה.
 

דריזט

New member
והקוד

בסיפריית הסטנדרד של מייקרוסופט rand ממומש כך:
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);​
כאשר הערך של holdrand (מסוג unsigned int) נקבע ב srand - פונקציית ה seed. למרות ש holdrand הוא משתנה בעל 32 סיביות, המספר הרנדומלי לעולם לא יעלה על 0x7fff (= המספר בעל 16 סיביות הגבוה ביותר עם סיבית הסימן). את המקסימום שבו תומך הקומפיילר שלך תוכל לדעת באמצעות המקרוRAND_MAX. /dev/random לעומת זאת הרבה יותר מתוחכם, כפי שניתן ללמוד מכאן.
 

ASHY

New member
מוזר מאוד

הודעתי שהייתה תקינה לגמרי נמחקה אחרי שהועלתה לשרת של תפוז אתמול. בכל מקרה אחזור עליה בקצרה: הפונקציה time תחזיר את מספר השניות שחלפו מרגע מסויים בשנות ה80 כאשר הומצא המנגנון הזה. דבר נסוף הוא זה: כאשר דיברתם על עיקרון האי וודאות, אעיתם במעט.... עיקרון האי וודאות אמור שככל שנטיב לדעת מיקומו של חלקיק מסויים כך נדע פחות טוב את מהירותו, ולהפך. אך אכן, תורת הקוונטים כן מאשר עיקרון רנדומליות: היא אומרת שאם העולם במצב X יש Y סיכויים שהוא יהפוך למצב Z וG סיכויים שיהפוך למצב K. מנהלים, אם מחקתם את הודעתי בכוונה, אנא כיתבו לי מה הייתה הסיבה, היא נראתה לי תקינה לגמרי
 

nirtheking

New member
אני לא למדתי פיזיקה ברמה כזו ואני

לא תוכניתן של ממש אבל בקישור הזה יש על איך לעשות מספר רנדומלי באקסס לאקסס אין את האפשרות לסדר ברנדומליות כמו ל-MSSQL (ה-newId()) ומישהו שאני מכיר מפורום ASP (אוריקס) כתב את המאמר הנמצא בקישור זו דרך לרנדומליות (אולי לא מושלמת כל-כך אבל עדיין רנדומליות) והכל בזכות הטריגו
 
למעלה