rand

Autres langues

Langue: ja

Version: 2003-11-15 (openSuse - 09/10/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

̾Á°

rand, srand - Íð¿ô¤òÀ¸À®¤¹¤ë´Ø¿ô

½ñ¼°


#include <stdlib.h>



int rand(void);



int rand_r(unsigned int *seedp);



void srand(unsigned int seed);

ÀâÌÀ

rand() ´Ø¿ô¤Ï 0 ¤«¤é RAND_MAX ¤Î´Ö¤Îµ¿»÷Íð¿ôÀ°¿ô¤òÊÖ¤¹¡£

srand() ´Ø¿ô¤Ï¡¢ rand() ´Ø¿ô¤Çºî¤é¤ì¤ëµ¿»÷Íð¿ôÀ°¿ô·ÏÎó¤Î¿·¤·¤¤¼ï¤È¤·¤Æ¡¢ ¤½¤Î°ú¤­¿ô¤ÎÃͤò»ÈÍѤ¹¤ë¡£ ¤³¤ì¤é¤Î´Ø¿ô¤ò»ÈÍѤ·¤Æºî¤é¤ì¤¿µ¿»÷Íð¿ô·ÏÎó¤Ï¡¢ Ʊ¤¸Ãͤò°ú¤­¿ô¤È¤·¤Æ srand() ¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ ºÆ¸½¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£

¼ï¤ÎÃͤ¬Í¿¤¨¤é¤ì¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ rand() ´Ø¿ô¤Ï ¼«Æ°Åª¤Ë 1 ¤ò¼ï¤È¤¹¤ë¡£

rand() ´Ø¿ô¤ÏºÆÆþ²Äǽ (reentrant) ¤Ç¤Ï¤Ê¤¤¡¢¤Ä¤Þ¤ê¥¹¥ì¥Ã¥É¡¦¥»¡¼¥Õ¤Ç¤Ï¤Ê¤¤¡£ ¤Ê¤¼¤Ê¤é¡¢¤³¤Î´Ø¿ô¤Ï±£¤·¾õÂÖ¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¸Æ¤Ó½Ð¤µ¤ì¤ëÅÙ¤ËÊѹ¹¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£ ¤Á¤ç¤¦¤É¤³¤Î±£¤·¾õÂÖ¤¬¼¡¤Î¸Æ¤Ó½Ð¤·»þ¤ÎÍð¿ô¤Î¼ï¤È¤·¤Æ»È¤ï¤ì¤ë¤è¤¦¤Ê¤â¤Î¤Ç¤¢¤ë¡£ ¼ÂºÝ¤Ë¤Ï¤â¤¦¾¯¤·Ê£»¨¤«¤â¤·¤ì¤Ê¤¤¤¬¡£¥¹¥ì¥Ã¥É¤ò»ÈÍѤ¹¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç ºÆ¸½²Äǽ¤ÊÆ°ºî¤ò¤µ¤»¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢¤³¤Î±£¤·¾õÂÖ¤¬¸¶°ø¤ÇºÆ¸½À­¤¬¤Ê¤¯¤Ê¤ë¡£ rand_r() ´Ø¿ô¤Ï unsigned int ·¿¤ÎÊÑ¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò°ú¤­¿ô¤Ë¤È¤ê¡¢ ¤³¤ÎÊÑ¿ô¤ò¾õÂÖ³ÊǼÍѤ˻ÈÍѤ¹¤ë¡£ ¾õÂÖ¿ô¤¬Èó¾ï¤Ë¾®¤µ¤¤¤Î¤Ç¡¢¤³¤Î´Ø¿ô¤Ï¤¢¤Þ¤ê¤è¤¤µ¼»÷Íð¿ôÀ¸À®´ï¤È¤Ï¸À¤¨¤Ê¤¤¤À¤í¤¦¡£ Âå¤ï¤ê¤Ë drand48_r(3) ¤ò»È¤¦¤È¤è¤¤¡£

ÊÖ¤êÃÍ

rand() ¤È rand_r() ´Ø¿ô¤Ï 0 ¤È RAND_MAX ¤Î´Ö¤Î¿ô¤òÊÖ¤¹¡£ srand() ´Ø¿ô¤ÏÃͤòÊÖ¤µ¤Ê¤¤¡£

½àµò

´Ø¿ô rand() ¤È srand() ¤Ï SVr4, 4.3BSD, C89, C99, POSIX.1-2001 ¤Ë½àµò¤·¤Æ¤¤¤ë¡£ ´Ø¿ô rand_r() ¤Ï POSIX.1-2001 ¤ËͳÍ褹¤ë¡£

Ãí°Õ

rand() ¤È srand() ¤Î Linux C Library ÈǤϡ¢ random(3) ¤È srandom(3) ¤Îξ´Ø¿ô¤ÈƱ¤¸Íð¿ôÀ¸À® ¥¢¥ë¥´¥ê¥º¥à¤ò»ÈÍѤ·¤Æ¤¤¤ë¡£¤½¤Î¤¿¤á¡¢²¼°Ì¤Î¥Ó¥Ã¥È¤Ï¾å°Ì¤Î¥Ó¥Ã¥È¤È Ʊ¤¸¤¯¤é¤¤¤Ë¥é¥ó¥À¥à¤Ç¤¢¤ë¡£ ¤·¤«¤·¡¢µìÈǤΠrand() ¤Î¼ÂÁõ¤ä¡¢Â¾¤Î¥·¥¹¥Æ¥à¤Î¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢²¼°Ì¤Î¥Ó¥Ã¥È¤¬¾å°Ì¤Î¥Ó¥Ã¥È¤Û¤É ¥é¥ó¥À¥à¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¡£°Ü¿¢À­¤ò¹â¤á¤ë¾ì¹ç¤Ç¤â¡¢ÀºÅ٤ι⤤Íð¿ô¤¬É¬Í×¤Ê ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¤³¤Î´Ø¿ô¤Ï»ÈÍѤ·¤Æ¤Ï¤¤¤±¤Ê¤¤¡£

Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 1992 (2nd ed., p. 277)) ¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¥³¥á¥ó¥È¤¬¤Ê¤µ¤ì¤Æ¤¤¤ë¡£

¡Ö1 ¤È 10 ¤Î´Ö¤ÎÍð¿ô¤òÀ¸À®¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢¾ï¤Ë

j = 1 + (int) (10.0 * rand() / (RAND_MAX + 1.0));
¤Î¤è¤¦¤Ë¾å°Ì¥Ó¥Ã¥È¤òÍѤ¤¤ë¤³¤È¡£

j = 1 + (rand() % 10);
¤Î¤è¤¦¤Ê¡¢²¼°Ì¤Î¥Ó¥Ã¥È¤òÍѤ¤¤ë¤è¤¦¤ÊÊýË¡¤Ï·è¤·¤Æ¤·¤Ê¤¤¤³¤È¡£¡×

Íð¿ô¤ÎÀ¸À®¤ÏÊ£»¨¤ÊÏÃÂê¤Ç¤¢¤ë¡£Á°½Ò¤Î Numerical Recipes in C ¤Ç¤Ï¼ÂÍÑŪ¤ÊÍð¿ôÀ¸À®¤òÏÀÅÀ¤È¤·¤¿Í¥¤ì¤¿µÄÏÀ¤¬Âè 7 ¾Ï (Íð¿ô) ¤ÇŸ³«¤µ¤ì¤Æ¤¤¤ë¡£

¤è¤êÍýÏÀŪ¤ÊµÄÏÀ¤Ë¤Ä¤¤¤Æ¤Ï Donald E. Knuth ¤Î The Art of Computer Programming, volume 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing Company, 1981 ¤ÎÂè 3 ¾Ï (Íð¿ô) ¤ò¸«¤è¡£¤³¤³¤Ç¤Ï¡¢ ¤¿¤¯¤µ¤ó¤Î¼ÂÍÑŪ¤ÊÏÃÂê¤Ë¤Ä¤¤¤Æ¤â¿¼¤¯ÌÖÍ夵¤ì¤Æ¤¤¤ë¡£

Îã

POSIX 1003.1-2003 ¤Ç¤Ï¡¢ rand() ¤È srand() ¤Î¼ÂÁõÎã¤È¤·¤Æ°Ê²¼¤òµó¤²¤Æ¤¤¤ë¡£¤³¤ì¤Ï¡¢°Û¤Ê¤ë£²¤Ä¤Î¥Þ¥·¥ó¤ÇƱ¤¸Íð¿ô·ÏÎó¤¬ É¬Íפʾì¹ç¤Ë¤ÏÊØÍø¤Ç¤¢¤í¤¦¡£

    static unsigned long next = 1;



    /* RAND_MAX ¤ò 32767 ¤È²¾Äê */

    int myrand(void) {

        next = next * 1103515245 + 12345;

        return((unsigned)(next/65536) % 32768);

    }



    void mysrand(unsigned seed) {

        next = seed;

    }

´ØÏ¢¹àÌÜ

drand48(3), random(3)