פורסם 2007 במרץ 118 שנים רציתי לדעת איך מייצרים מספר רנדומלי באסמבלי 8086 ואיך לקבוע לטווח גבולות אני יודע שבפסקל יש אפשרות כזאת ובסוף הכל הופך לאסמבלי...
פורסם 2007 במרץ 118 שנים זה מעט יותר מסובך מזה. יש כל מני אלגוריתמים ליצור מספר פסאודו אקראי. זה של טורבו פסקל הוא כנראה משהו בסגנון:NEW_X = ((1664525 * OLD_X) + 1013904223) modulo 2^32כאשר NEW_X ו-OLD_X הם רגיסטרים של 32 סיביות קל במיוחד לממש את זה ע"י פעולת MUL ופעולת ADD.הערות:* מומלץ להשתמש רק בסיביות הגבוהות של NEW_X כיון שהן "יותר אקראיות" מהנמוכות.* קח בחשבון שאיכות האקראיות בשיטה זו היא לא טובה במיוחד, אבל היא קלה מאוד למימוש ומספיקה להרבה שימושים.* אל תחליף את הקבועים! יש כללים מוקפדים לבחירת קבועים מתאימים, והאלגוריתם רגיש ביותר לבחירת הקבועים. תבחר קבועים לא מתאימים, ותקבל גנרטור שמייצר רק 16 מספרים שחוזרים על עצמם, לדוגמא.
פורסם 2007 במרץ 118 שנים כמו שנאמר משתמשים בנוסחה כמו זאת שהוזכרה קודם אפשר לקבל הסבר עליה כאןhttp://en.wikipedia.org/wiki/Linear_congruential_generatorחוץ מזה אם אתה רוצה שהאקראיות תשמר תשתמש ב seed ואז התוכנית תמיד תיצר את אותה סדרת מספרים. אם אתה רוצה שכל הרצה של התוכנית תשתמש בסדרה אחרת אז אתה צריך להשתמש בשעון בשביל ה SEED כי השעון משתנה בין הרצה להרצה. גישה לשעון בASM 8086 ממש לא ידוע לי אני יודע שבPPC יש שעון בתוך המעבד ב 8086 נראה לי שהוא חיצוני.
פורסם 2007 במרץ 118 שנים למיטב זכרוני ב-PC עם DOS יש כתובת בזכרון ממנה אפשר להוציא את מספר פסיקות השעון מאז הריבוט האחרון. לא זוכר איפה זה, תחטט ברשת.
פורסם 2007 במרץ 118 שנים בנוסחא לא הבנתי מזה ה moduloשארית של פעולת חילוק ב C היא הפעולה שנעשת על ידי %.למשל 7 לחלק ל3 זה 2 + שארית 1.
פורסם 2007 במרץ 118 שנים אתה צריך לפנות לRTC ואז לעשות את זהץ למדתי את זה לפני 3 שנים ואני לא זוכר. אולי אמצא את החומר ואז אעזור לך.
פורסם 2007 במרץ 118 שנים מחבר [quote name='Zelig']זה מעט יותר מסובך מזה. יש כל מני אלגוריתמים ליצור מספר פסאודו אקראי. זה של טורבו פסקל הוא כנראה משהו בסגנון:[code]NEW_X = ((1664525 * OLD_X) + 1013904223) modulo 2^32כאשר NEW_X ו-OLD_X הם רגיסטרים של 32 סיביות קל במיוחד לממש את זה ע"י פעולת MUL ופעולת ADD.הערות:* מומלץ להשתמש רק בסיביות הגבוהות של NEW_X כיון שהן "יותר אקראיות" מהנמוכות.* קח בחשבון שאיכות האקראיות בשיטה זו היא לא טובה במיוחד, אבל היא קלה מאוד למימוש ומספיקה להרבה שימושים.* אל תחליף את הקבועים! יש כללים מוקפדים לבחירת קבועים מתאימים, והאלגוריתם רגיש ביותר לבחירת הקבועים. תבחר קבועים לא מתאימים, ותקבל גנרטור שמייצר רק 16 מספרים שחוזרים על עצמם, לדוגמא.
פורסם 2007 במרץ 118 שנים עבר קצת זמן אבל משהו כמו:mov ebx, SEED_ADDRESSmov eax, dword ptr [ebx]mov ecx, 1664525mul ecxadd eax, 1013904223mov dword ptr [ebx], eaxוהמספר האקראי הוא ב-EAX.
פורסם 2007 במרץ 118 שנים מחבר אני מניח ש EAX ו EBX הם משתנים שאתה יצרת?ואם אפשר בלי ה PTR אסור לנו להשתמש בזה+מזה ה SEED ADRESS
פורסם 2007 במרץ 118 שנים HUH ?ה EAX ו EBX הם רגיסטרים של 32 ביט.SEED_ADDRESS היא הכתובת בזכרון בו נמצא המספר....
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.