› פורומים › אפיון ופיתוח פריוריטי › פונקצית RAND
- This topic has 4 תגובות, 3 משתתפים, and was last updated לפני 5 שנים, 9 חודשים by
גילת גולד.
- Post
- Replies
-
- ינואר 28, 2020 בשעה 1:22 pm
לפני הרבה מאד זמן היה לי קוד בפסקל ליצירת מספרים כאילו רנדומליים. זה היה קשור לזמן (במקרה שלנו SQL.DATE) MOD מספר ראשוני כלשהו יחד עם עוד כמה דברים. אני משער שזה לא ממש עוזר לך.- ינואר 28, 2020 בשעה 2:19 pm
באיזו גרסה אתם?במסמך SDK של גרסה 19 בפרק 15 מוזכרת פקודת PRANDOM
יכול להיות שקיימת בגרסה קודמת רק לא מתועדת, אינני יודע.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- ינואר 28, 2020 בשעה 4:55 pm
ומצאתי את זה באחד מהדיונים פה בפורום..אבל אני לא מבינה איך זה מביא מספר רנדומלי או רשומה רנדומלית .
/* Generate pseudo random numbers */
:HOUR = ATOI (STRIND (DTOA (SQL.DATE, 'hh:mm'), 1, 2));
:MINS = ATOI (STRIND (DTOA (SQL.DATE, 'hh:mm'), 4, 2));
:TMP = 0.0;
:XSEED = ((YEAR (SQL.DATE8) MOD 100) + (MONTH (SQL.DATE8) * 493))
MOD 30269;
:YSEED = ((MONTH (SQL.DATE8) – 1) + (2417 * :HOUR) + (23 * :MINS))
MOD 30307;
:N = 0; /* LOOP COUNTER */
LABEL 1;
:XSEED = 171 * (:XSEED MOD 177) – 2 * ROUND ((:XSEED + 0.0) / 177);
SELECT (:XSEED < 0 ? 30269 : 0) + :XSEED INTO :XSEED FROM DUMMY;
:YSEED = 172 * (:YSEED MOD 176) – 35 * ROUND ((:YSEED + 0.0) / 176);
SELECT (:YSEED < 0 ? 30307 : 0) + :YSEED INTO :YSEED FROM DUMMY;
:TMP = :XSEED / 30269.0 + :YSEED / 30307.0;
:PAR1 = ITOA (ROUND (:$.MAX * ABSR (:TMP – ROUND (:TMP))));:N = :N + 1;
LOOP 1 WHERE :N < :$.NUM;
- יש להתחבר למערכת על מנת להגיב.

