מישהו מתחיל - איך יוצרים מספרים רנדומליים ב ++C ? - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

מישהו מתחיל - איך יוצרים מספרים רנדומליים ב ++C ?


pooggy

Recommended Posts

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int start = 1, end = 10

srand((unsigned) time(NULL));

printf("%d\n", rand() % (end - start) + start );
return 0;
}

זה יתן לך מספר רנדומלי מstart לend-1

זה עובד ככה..

אתה משתמש בזמן כפרמטר לרנדומליות, זמן זה נקרא timestamp והוא אם אני לא טועה מספר השניות שעברו מהראשון לינואר 1978, אתה משתמש בפעולה שארית כדי לקבל מספר שהוא בין 0 למספר שאתה מחלק בו במקרה שלנו end-start כלומר 9 אז תקבל מספר בין 0 ל 8, אתה מוסיף לו את start שהוא 1 ולכן תקבל מספר מ1 עד 9

או ברמה יותר כללית, אתה עושה שארית בשביל לקבל מספר בין 0 ל - end - start , לאחר ההוספה של start אתה מקבל מספר שהוא בין start ל end

קישור לתוכן
שתף באתרים אחרים

חחחחחחחחחחח מה העמסת על הבנאדם

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

הופנקציות המובנות של השפות על הפניםם

נותנו בדיוק את אותם המספרים כל הזמן

מה שמעלי הביא מעולה, תנסה להבין את זה

קישור לתוכן
שתף באתרים אחרים

כלומר יש פונקציות רנדומליות יותר טובות?

איפה אפשר למצוא אותן?

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

קישור לתוכן
שתף באתרים אחרים

כלומר יש פונקציות רנדומליות יותר טובות?

איפה אפשר למצוא אותן?

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

תתבונן במה שרשמתי.

קישור לתוכן
שתף באתרים אחרים

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

matteo, מאיפה החלטת שהפונקציות המובנות נותנות תמיד את אותם המספרים? כל עוד דואגים לקרוא ל-srand בדיוק פעם אחת בתחילת התכנית, לא אמורה להיות בעיה.

קישור לתוכן
שתף באתרים אחרים

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

matteo, מאיפה החלטת שהפונקציות המובנות נותנות תמיד את אותם המספרים? כל עוד דואגים לקרוא ל-srand בדיוק פעם אחת בתחילת התכנית, לא אמורה להיות בעיה.

ניסוי וטעיה

מרבית הפעמים שהשתמשתי בפוקנציית ראנד ככה בלי עריכה מסויימת, ניתנו לי אותם המספרים

בכל אופן יש לזה אלפי פתרונות

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

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

בדיוק מה שאמרתי

ושוב הפונקציות שניתנו לעיל מעולות לפתור תבעיה זה הכל.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...