עבור לתוכן

לא מצליח ליצור מספרים רנדומליים

Featured Replies

פורסם

אני מנסה ליצור מספרים רנדומליים בין 0-255

אז רשמתי קוד

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

#include <stdio.h>
#include <stdlib.h>


void noise()
{

int random=0;
random=(rand());
printf("%d",random);
getch();
}


void main()
{
noise();

}

אני משתמש ב ++C

פורסם

אני לא יודע איך זה בC++, אך בPASCAL צריך לרשום בהתחלה RANDOMIZE :)

פורסם
  • מחבר

טוב אני בדרך להתייאשות

ניסיתי כבר יותר מ5 קודים שונים ותמיד הוא נותן לי את אותה תוצאה, 41!!!

אני לא יודע מה לעשות :s07:

פורסם

חיפוש נסית?

פורסם
  • מחבר

ניסיתי גם ניסיתי

הרצתי חלק גדול מהקודים שמוצעים

אבל הם רובם ל C

ואני בכולם מקבל את אותה תוצאה... (41)

פורסם

אתה גם ככה משתמש ב-stdio.h שזה C

מה בדיוק עושה את הקוד שלך C++?

פורסם
  • מחבר

אני יכול להריץ גם ב++C דברים של C

אבל חלקם פשוט לא עובדים

לדוגמא אם אני מנסה לעשות Randomize

אבל החלק הבעייתי שלי הוא שלא משנה מה אני עושה הוא תמיד נותן לי את אותו המספר

41!!!

פורסם

תוסיף:

#include <time.h>

ותכניס ב-MAIN את השורה הבאה:

srand(time(NULL));

השורה הזאת צריכה להיכנס לפני שימוש בפונ' rand. בקיצור תכניס אותה לפני הקריאה ל-noise().

* אגב, צריך להוסיף את השורה הזאת רק פעם אחת...

פורסם

זה מה שאתה צריך לכתוב:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define K 10

void noise()
{

int random=rand()%K;
random=(rand());
printf("%d",random);
getch();
}


void main()
{
srand(time(0));
noise();

}

מה שהפונקציה rand תעשה היא תייצר עבורך מספר בין 0 ל2 בחזקת 16 כל מה שנשאר לך לעשות הוא לצמצם את הטווח הזה למספרים שאתה רוצה למשל כמו בדוגמא שלי בין 0 ל9

פורסם

או שתשתמש בזה:

random = GetTickCount() % 256;

יחד עם הגדרת:

#include<windows.h>

פורסם

עמית - לא טוב מה שהצעת...

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

16

17

18

19

20

(מבין למה?)

פורסם

אז זהו שלא

srand עושים רק פעם אחת בהתחלה

לא צריך כל פעם לקרוא לפונקציה לפני rand

פורסם

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

אבל אני כבר לא זוכר איך...

(לא עם srand)

פורסם

Holy נראה לי שהתבלבלת קצת... לא קראת נכון את הת'רד. נסה שנית  ;D

בכל אופן השיטה שעמית הציע מסתמכת על GetTickCount, זו פונ' שמחזירה מספר שכל הזמן עולה... לכן אם תבצע בלולאה:

random = GetTickCount() % 256

סביר להניח שתקבל

random=

1

2

3

4

5

6

.

.

.

254

255

1

2

.

.

.

פורסם

התגובה שלי התייחסה למה שisildur כתב :)

שכח מזה

ארכיון

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

דיונים חדשים