פונקצית RAND

  • Post
    גילת גולד
    משתתף
    היי,

     

    אני מנסה לשלוף רשומות מסוימות בצורה רנדומלית

    יש בSQL פונקצית RAND שעושה את זה אבל הWINDBI של פריוריטי לא מכיר אותה

    איך בכל זאת ניתן לשלוף רשומות אקראיות בפריוריטי?

    תודה

     

מוצגות 4 תגובות – 1 עד 4 (מתוך 4 סה״כ)
  • Replies
    NoamN
    משתתף
    none
    לפני הרבה מאד זמן היה לי קוד בפסקל ליצירת מספרים כאילו רנדומליים. זה היה קשור לזמן (במקרה שלנו SQL.DATE) MOD מספר ראשוני כלשהו יחד עם עוד כמה דברים. אני משער שזה לא ממש עוזר לך.
    yitzchok
    משתתף
    IL
    באיזו גרסה אתם?

    במסמך SDK של גרסה 19 בפרק 15 מוזכרת פקודת PRANDOM

    יכול להיות שקיימת בגרסה קודמת רק לא מתועדת, אינני יודע.

     

     

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    גילת גולד
    משתתף
    לנו יש גרסה 18.2

    PRANDOM- יעבוד בגרסה זו?

     

    גילת גולד
    משתתף
    ומצאתי את זה באחד מהדיונים פה בפורום..

    אבל אני לא מבינה איך זה מביא מספר רנדומלי או רשומה רנדומלית .

     

    /* 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;

מוצגות 4 תגובות – 1 עד 4 (מתוך 4 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.