פורסם 2005 באוקטובר 320 שנים אני רוצה לדעת איך אפשר ליצור פונקציה ליצירת מספר אקראי. לא בשפה ספציפית כלשהי אלא פשוט איך אני יוצר מספר אקראי? על מה הפונקציה מתבססת?
פורסם 2005 באוקטובר 320 שנים שעון המערכת של המחשב הוא ממש לא אקראי.קריאות רצופות מהשעון יחזירו ערכים קרובים ואפילו קבועים, כי השעון לא יספיק להתעדכן בין פעולה לפעולה.רוב שפות התכנות מממשות רנדום באמצעות אלגוריתם (לא מדויק לקרוא לזה ככה, אבל אין לי שם יותר טוב) בשם LCG:http://en.wikipedia.org/wiki/Lcg
פורסם 2005 באוקטובר 320 שנים news Flash האלגוריתמים האלה משתמשים בשעון המערכת : מספרים פסאודו-אקראייםמספרים פסאודו-אקראיים הינם מספרים אשר מנסים לדמות מספרים אקראיים אולם נוצרו באמצעות אלגוריתם דטרמיניסטי בעל מרכיב אקראי. ישנם אלגוריתמים רבים ליצירת סדרות ארוכות (לעתים בעלות מיליוני איברים) של מספרים בעלי חזות אקראית. המספרים אומנם מציגים התנהגות אקראית למדי, אולם מטבע הדברים, סופה של הסדרה לחזור על עצמה בשלב כלשהו (שכן המחשב הוא בעל זיכרון מוגבל). בדרך כלל, יצירת סדרה כלשהי מתחילה מהזנת ה"מקור" (seed). בהנתן המקור, ניתן לשחזר את הסדרה בשלמותה על מחשב אחר. לעובדה זו שימושים רבים, שכן ניתן להעביר את המקור ממקום למקום וליצור את אותה הסדרה (בכל אורך אפשרי) בכל מקום אחר. כדי להגדיל את האקראיות, מנסים לבחור מקור אקראי, למשל שעון המחשב או תופעה בלתי צפויה אחרת.
פורסם 2005 באוקטובר 420 שנים האלגוריתמים עצמם לא קשורים לשעון, אבל כאשר לא מדובר באבטחת מידע, משתמשים הרבה בשעון כדי לאתחל אותו.כשכן מדובר באבטחת מידע, בדר"כ משתמשים בקלט שונה (או שילוב של קלטים שונים), כמו תזמון של הקשות המשתמש, תנועות עכבר, משאבי מערכת ואפילו רעש ממקרופון)אלגוריתם פשוט נקרא linear shift register שמייצר stream פסאודו-רנדומלי של ביטים.לוקחים מערך בינארי ובוחרים חלק מהתאים בו (בצורה שרירותית).מאתחלים את המערך עם ה- seed.כדי להוציא ביט, עושים xor בין התאים שבחרנו, מקבלים את הביט ה"רנדומלי", ודוחפים אותו לתחילת המערך (כלומר - מוציאים את האיבר ה"ימני" דוחפים את שאר האיברים ימינה ומכניסים את הביט החדש משמאל).צריך לשים לב שיש צירופים מסוימים של "בחירות של המערך" ו- seeds שייתנו לך סדרה גרועה מאוד (או אפילו קבועה)
פורסם 2005 באוקטובר 420 שנים What he said.השאלה היא למה אתה צריך מספרים אקראיים.אם זה סתם בשביל להגריל קוביות בשש-בש, מספיק לך LCG עם seed מהשעון.במקרה של אבטחת מידע, תרצה משהו יותר רציני.
פורסם 2005 באוקטובר 420 שנים האלגוריתמים עצמם לא קשורים לשעון, אבל כאשר לא מדובר באבטחת מידע, משתמשים הרבה בשעון כדי לאתחל אותו. איפה בדיוק פה הסתירה עם מה שאמרתי? : העובדה היא שכשאתה עושה randomize בכל שפת תיכנות שהיא היא משתמשת בשעון המערכת נקודה. ובשביל אבטחת מידע משתמשים היום ב-public key
פורסם 2005 באוקטובר 420 שנים ממה שאתה אמרת אפשר להבין שמשתמשים בשעון בלבד על מנת ליצור מספרים אקראיים... מה שלא ממש נכון.וחוץ מזה, randomize ב-C לא טוען אוטומטית מהשעון, זה פשוט נהוג לתת לו להיטען מהשעון.ובשביל אבטחת מידע משתמשים היום ב-public keyזה ממש לא קשור.public key לא משמש ליצירת מספרים אקראיים.
פורסם 2005 באוקטובר 420 שנים ממה שאתה אמרת אפשר להבין שמשתמשים בשעון בלבד על מנת ליצור מספרים אקראיים... מה שלא ממש נכון. הבן אדם שאל על מה זה מתבסס. עניתי לו תשובה קצרה ולעניין. זה שאתה מתחיל לפרש אותה לכל מיני כיוונים זאת לא בעיה שלי public key לא משמש ליצירת מספרים אקראיים. איפה אמרתי שכן?? דיברתם על אבטחת מידע אז זאת שיטת ההצפנה הטובה ביותר
פורסם 2005 באוקטובר 420 שנים זה כמו שישאלו אותך איך פועלת מכונית, ותגיד שהיא פועלת באמצעות דלק.יצירת מספרים אקראיים בהחלט לא מתבססת על השעון, זה פשוט חלק מהמנגנון כולו.דיברתם על אבטחת מידע אז זאת שיטת ההצפנה הטובה ביותראבל לא דיברנו על הצפנה, אלא על יצירת מספרים אקראיים (שגם לה יש חלק משמעותי בהצפנה, כמובן).
פורסם 2005 באוקטובר 520 שנים זה כמו שישאלו אותך איך פועלת מכונית, ותגיד שהיא פועלת באמצעות דלק.יצירת מספרים אקראיים בהחלט לא מתבססת על השעון, זה פשוט חלק מהמנגנון כולו.אויייש אתה חייב להפסיק לדבר על דברים שאתה לא מבין בהם.האלגוריתם ליצירת מספרים אקראיים הוא קבוע וניתן לבצע אותו על כל מחשב בעולם והוא יחזיר את אותם מספרים. הדבר היחיד שיוצר את ה(פסאודו)אקראיות, הוא שעון המערכת. בגלל זה אמרתי שהאלגוריתמים מתבססים עליו ובגלל זה אם מישהו ישאל אותי על איזה עיקרון פועל מנוע של מכונית אני יגיד "שריפת דלק"
פורסם 2005 באוקטובר 520 שנים קיימים הרבה (עשרות, מאות, אלפים...) אלגוריתמים ליצירת מספרים אקראיים, כשהנפוץ בהם הוא ה-LCG.(תואר כאן גם אלגוריתם בסיסי אחר בשם Linear Shift Register)ולכל אחד יש הרבה דרכים לטעון.דרך אחת, היא באמצעות השעון. זו דרך די גרועה האמת, אבל לצרכים פשוטים (כמו שציינתי לעיל) היא מספיק טובה.דרך אחרת היא באמצעות איסוף כל מיני נתונים אקראיים מהמחשב (תזוזות של העכבר, הקלדות, חום המעבד ועוד).בכל זאת, כשאתה אומר שעל מנת ליצור מספרים אקראיים פשוט משתמשים בשעון, זה מאוד מטעה - זה גורם לשואל לחשוב שכל מה שצריך על מנת ליצור מספרים אקראיים הוא לקרוא מהשעון וזהו, מה שיגרום לרנדום די מנוון, ולא ממש אקראי.אם מישהו ישאל אותי על איזה עיקרון פועל מנוע של מכונית אני יגיד "שריפת דלק"אתה יכול לומר את זה, אבל זו תשובה כל כך פשטנית שהיא כמעט לא אומרת כלום.
פורסם 2005 באוקטובר 520 שנים איזה שטויותאי אפשר להבין ממה שאמרתי שכל מה שצריך זה לקחת מהשעון ואם הבנת את זה ככה אז יש לך בעיה בהבנת הנקרא.הוא שאל על מה זה מתבסס ועל זה עניתי.אם הוא היה שואל איך עושים מספר רנדומלי בשפת תיכנות הייתי אומר לו לכתוב rnd/random/וכו..
פורסם 2005 באוקטובר 520 שנים אבל זה לא מה שהוא שאל הוא שאל איך יוצרים פונקציה ליצירת מספרים אקראיים. ודרך אגב, אל תאמר לי להפסיק לדבר על נושאים שאני לא מבין בהם כי אני מבין בנושא יותר ממה שאתה חושב...
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.