MersenneTwister JavaScript Version
µ¼»÷Íð¿ô (Pseudo-random Number)À¸À®¥¢¥ë¥´¥ê¥º¥à¤Î°ì¤Ä¤Ç¤¢¤ë¥á¥ë¥»¥ó¥Ì¡¦¥Ä¥¤¥¹¥¿ (MersenneTwister)¤ÎJavaScript¸À¸ì°Ü¿¢ÈǤòºîÀ®¤·¤Þ¤·¤¿¡¥¡Ê¥á¥ë¥»¥ó¥Ì¡¦¥Ä¥¤¥¹¥¿¤ÎÀâÌÀ¤Ï¡¤wikipedia¤â¤·¤¯¤ÏMT¹Í°Æ¼Ô¤Î¥¦¥§¥Ö¥µ¥¤¥È¤Ë¾Ü¤·¤¯µºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥¡Ë
TOPIC: MT¹Í°Æ¼Ô¤Î¥¦¥§¥Ö¥µ¥¤¥È¤«¤é¤³¤Îµ»ö¤¬¥ê¥ó¥¯¤µ¤ì¤Þ¤·¤¿¡ª
JavaScript¸À¸ì°Ü¿¢ÈǤΥ½¡¼¥¹¥³¡¼¥É¤È¼Â¹Ô·ë²Ì¤Ï°Ê²¼¤Ç¤¹¡¥
¡¦¥á¥ë¥»¥ó¥Ì¥Ä¥¤¥¹¥¿JavaScript¸À¸ì°Ü¿¢ÈÇ¥½¡¼¥¹¥³¡¼¥É
¡¡¡¡NOTE: Copyright¤Ê¤É¤â̵½¤Àµ¤Ç»Ä¤·¤Æ¤Þ¤¹ f^^;
¡¦¥á¥ë¥»¥ó¥Ì¥Ä¥¤¥¹¥¿JavaScript¸À¸ì°Ü¿¢ÈǤμ¹Ô
¡¦JavaScript¸À¸ì°Ü¿¢ÈǤμ¹Էë²Ì (FireFox3 / Windows XP)
¤Þ¤¿¡¤JavaScript¸À¸ì¤Ç¥¯¥é¥¹²½¤·¤¿¤â¤Î¤âºîÀ®¤·¤Þ¤·¤¿¡¥
¡¦JavaScriptÈÇMersenneTwister¥¯¥é¥¹ (UTF-8)
¡¦JavaScriptÈÇMersenneTwister¥¯¥é¥¹¤Î¼Â¹Ô
¼Â¹Ô·ë²Ì¤Ï¡¤¥ª¥ê¥¸¥Ê¥ë¤È¸·Ì©¤Ë°ìÃפ·¤Æ¤¤¤Þ¤¹¡¥¥ª¥ê¥¸¥Ê¥ë¤Î¥½¡¼¥¹¥³¡¼¥É¤È¼Â¹Ô·ë²Ì¤Ï°Ê²¼¤Ç¤¹¡¥
¡¦¥á¥ë¥»¥ó¥Ì¥Ä¥¤¥¹¥¿¥ª¥ê¥¸¥Ê¥ë¤Î¥½¡¼¥¹¥³¡¼¥É
¡¦¥ª¥ê¥¸¥Ê¥ë¤Î¼Â¹Ô·ë²Ì
TOPIC: MT¹Í°Æ¼Ô¤Î¥¦¥§¥Ö¥µ¥¤¥È¤«¤é¤³¤Îµ»ö¤¬¥ê¥ó¥¯¤µ¤ì¤Þ¤·¤¿¡ª

JavaScript¸À¸ì°Ü¿¢ÈǤΥ½¡¼¥¹¥³¡¼¥É¤È¼Â¹Ô·ë²Ì¤Ï°Ê²¼¤Ç¤¹¡¥
¡¦¥á¥ë¥»¥ó¥Ì¥Ä¥¤¥¹¥¿JavaScript¸À¸ì°Ü¿¢ÈÇ¥½¡¼¥¹¥³¡¼¥É
¡¡¡¡NOTE: Copyright¤Ê¤É¤â̵½¤Àµ¤Ç»Ä¤·¤Æ¤Þ¤¹ f^^;
¡¦¥á¥ë¥»¥ó¥Ì¥Ä¥¤¥¹¥¿JavaScript¸À¸ì°Ü¿¢ÈǤμ¹Ô
¡¦JavaScript¸À¸ì°Ü¿¢ÈǤμ¹Էë²Ì (FireFox3 / Windows XP)
¤Þ¤¿¡¤JavaScript¸À¸ì¤Ç¥¯¥é¥¹²½¤·¤¿¤â¤Î¤âºîÀ®¤·¤Þ¤·¤¿¡¥
¡¦JavaScriptÈÇMersenneTwister¥¯¥é¥¹ (UTF-8)
¡¦JavaScriptÈÇMersenneTwister¥¯¥é¥¹¤Î¼Â¹Ô
¼Â¹Ô·ë²Ì¤Ï¡¤¥ª¥ê¥¸¥Ê¥ë¤È¸·Ì©¤Ë°ìÃפ·¤Æ¤¤¤Þ¤¹¡¥¥ª¥ê¥¸¥Ê¥ë¤Î¥½¡¼¥¹¥³¡¼¥É¤È¼Â¹Ô·ë²Ì¤Ï°Ê²¼¤Ç¤¹¡¥
¡¦¥á¥ë¥»¥ó¥Ì¥Ä¥¤¥¹¥¿¥ª¥ê¥¸¥Ê¥ë¤Î¥½¡¼¥¹¥³¡¼¥É
¡¦¥ª¥ê¥¸¥Ê¥ë¤Î¼Â¹Ô·ë²Ì
---
JavaScript¤Ø¤Î°Ü¿¢¤Ë¤¢¤¿¤Ã¤Æ¶ìÏ«¤·¤¿ÅÀ¤Ï¡¤ÏÀÍý±é»»¤Ç¤¹¡¥ÆÃħŪ¤Ê¤Î¤Ï°Ê²¼¤Î¤è¤¦¤Ê·×»»¤ò¹Ô¤Ã¤¿¤È¤¤Ç¤¹¡¥
¡¡¡¡var v = (32¥Ó¥Ã¥È¤òͤ¨¤Ê¤¤Â礤ʿô);
¡¡¡¡var t = v * v + 1; // +1¤¬Ìµ»ë¤µ¤ì¤¿ÃÍ¡¥
¡¡¡¡¢¨v¤¬°ìÈÌŪ¤Ê¸À¸ì¤Îunsigned __int32·¿¤Ç¤¢¤ì¤Ð¡¤t¤Ï¡¤+1¤â¹Í褵¤ì¤¿Ãͤˤʤë¤Ï¤º¡¥32¥Ó¥Ã¥È¤ÎÀ°¿ô·¿¤È¤·¤Æ¡¤v * v¤Ç¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¹¤ë¤Î¤À¤í¤¦¤«¡©¤½¤ì¤È¤â¡¤ÆâÉô¤Ç°ì»þŪ¤ËÉâÆ°¾®¿ôÅÀ·¿¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¡©
¡¡¡¡var v1 = 0xFFffFFff; // v1¤Ï¡¤0xFFffFFff¤È¤Ê¤ê¡¤unsigned __int32·¿¤È¤·¤Æ°·¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤ë¡¥
¡¡¡¡var v2 = v1 & 0xFFffFFff; // v2¤Ï¡¤-1¤È¤Ê¤ê¡¤signed __int32·¿¤È¤·¤Æ°·¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤ë¡¥
¡¡¡¡var v3 = v2 >>> 0; // s2¤Ï¡¤0xFFffFFff¤È¤Ê¤ê¡¤unsigned __int32·¿¤È¤·¤Æ°·¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤ë¡¥
¡¡¡¡¢¨É½¼¨»þ¤Ë¤É¤¦¤Ê¤ë¤«¤À¤±¤Ç¤¢¤Ã¤Æ¡¤32¥Ó¥Ã¥È¤Î2¤ÎÊä¿ôɽ¸½¤È¤·¤Æ¤Ï¡¤¤É¤ì¤âÀµ¤·¤¤¡¥¤¬¡¤v2¤ò»ÈÍѤ·¤Æ³Ý»»Åù¤ò¹Ô¤¦¤È·ë²Ì¤ËÉé¿ô¤¬¸½¤ì¤¿¤ê¤·¤Æ¤Ó¤Ã¤¯¤ê¤¹¤ë¡¥¤É¤¦¤ä¤é¡¤ÊÑ¿ô¤ò´Þ¤à¿ôÃͤËÏÀÍý±é»»»Ò¤òŬÍѤ¹¤ë¤È¡¤ÅÓü¤Ë32¥Ó¥Ã¥ÈÀ°¿ô·¿¤È¤·¤Æ°·¤ï¤ì¤ë¤è¤¦¤À¡¥
¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤Ë¤è¤Ã¤Æ¡¤²¼°Ì·å¤Îñ½ã¤Ê·×»»¤¬¹ç¤ï¤Ê¤¯¤Ê¤ë¤Î¤ÏÀڼ¤ǡ¤¥á¥ë¥»¥ó¥Ì¡¦¥Ä¥¤¥¹¥¿¤Ç¤â¡È0x5D588B65¡É¤Ê¤É¤ÎÂ礤ʿô¤ò³Ý¤±¡¤¤½¤Î¸å¤Ë¾®¤µ¤Ê¿ô¤ò¤·¤¿¤ê¤¹¤ë²Õ½ê¤¬¤¢¤ê¤Þ¤¹¡¥°Ü¿¢»þ¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ê·×»»¤Ç²óÈò¤·¤Þ¤·¤¿¡¥
¡¡¡¡¸µ¥³¡¼¥É¡§
¡¡¡¡¡¡¡¡var v = (32¥Ó¥Ã¥È¤òͤ¨¤Ê¤¤Â礤ʿô)
¡¡¡¡¡¡¡¡var w = 0x5D588B65 * v + 2;
¡¡¡¡JavaScriptÍѽ¤Àµ¥³¡¼¥É
¡¡¡¡¡¡¡¡var v = (32¥Ó¥Ã¥È¤òͤ¨¤Ê¤¤Â礤ʿô)
¡¡¡¡¡¡¡¡var vh = (v & 0xffff0000) >>> 16, vl = v & 0xffff;
¡¡¡¡¡¡¡¡var w = ((vh * 0x5D588B65) << 16) + (vl * 0x5D588B65) + 2
¤Þ¤¿¡¤JavaScript¤Î¡È¿ôÃÍ·¿ÊÑ¿ô¡É¤ò¶¯À©Åª¤Ëunsigned __int32·¿¤ØÊÑ´¹¤¹¤ë¤Ë¤Ï¡¤¡ÈnumericVar >>>= 0¡É¤Ê¤É¤È¤¹¤ë¤ÈÎɤ¤¤Ç¤¹¡¥
---
Web¾å¤Î¥¤¥ó¥¿¥×¥ê¥¿¸À¸ì¤ò»ÈÍѤ·¡¤¥¹¡¼¥Ñ¡¼¥³¥ó¥Ô¥å¡¼¥¿Ê¤Υ·¥ß¥å¥ì¡¼¥·¥ç¥ó¤ò¹Ô¤¦É¬Íפ¬¤¢¤ëÊý¤Ï»²¹Í¤Ë¤·¤Æ²¼¤µ¤¤£÷
¤³¤¦¤¤¤¦¿ô³Ø·Ï¤Î¥Í¥¿¤ò¹Í¤¨¤Æ¤¤¤ë¤È¤¤Ï¡¤Á´¤Æ¤ò˺¤ì¤ÆËׯ¬¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¤º£²ó¤Ï¡¤´Ý°ìÆü¿²¤ë¤Î¤È¤´ÈÓ¤ò¿©¤Ù¤ë¤Î¤ò˺¤ì¤Æ¤¤¤Þ¤·¤¿¡¥¿²¤Æµ¯¤¤¿¤È¤¡¤¶õÊ¢¤Ç¡Èµ¯¤¾å¤¬¤ì¤Ê¤¤¡É¤Û¤É¡Ê޹ŽÞŽ×
---
¡Ú´ØÏ¢URI¡Û
¡¦¥á¥ë¥»¥ó¥Ì¥Ä¥¤¥¹¥¿¹Í°Æ¼Ô¤Î¥¦¥§¥Ö¥µ¥¤¥È
¡¦¾åµ¥µ¥¤¥È¤ÎJavaScript¸À¸ì°Ü¿¢ÈǤξҲð¥Ú¡¼¥¸
¡¦¥á¥ë¥»¥ó¥Ì¡¦¥Ä¥¤¥¹¥¿¡÷wikipedia
¡¦¥á¥ë¥»¥ó¥Ì¡¦¥Ä¥¤¥¹¥¿¤ÎJava¸À¸ì°Ü¿¢ÈÇ
¡¦µ¼»÷Íð¿ô¡÷wikipedia
¡Ú´ØÏ¢µ»ö¡Û
¡¦¥Ñ¥¹¥ï¡¼¥É¼«Æ°À¸À®
¡¦¤¢¤Ê¤¿¤Î¥ª¥ê¥¸¥Ê¥ë¥Ñ¥¹¥ï¡¼¥É¤òºîÀ®
JavaScript¤Ø¤Î°Ü¿¢¤Ë¤¢¤¿¤Ã¤Æ¶ìÏ«¤·¤¿ÅÀ¤Ï¡¤ÏÀÍý±é»»¤Ç¤¹¡¥ÆÃħŪ¤Ê¤Î¤Ï°Ê²¼¤Î¤è¤¦¤Ê·×»»¤ò¹Ô¤Ã¤¿¤È¤¤Ç¤¹¡¥
¡¡¡¡var v = (32¥Ó¥Ã¥È¤òͤ¨¤Ê¤¤Â礤ʿô);
¡¡¡¡var t = v * v + 1; // +1¤¬Ìµ»ë¤µ¤ì¤¿ÃÍ¡¥
¡¡¡¡¢¨v¤¬°ìÈÌŪ¤Ê¸À¸ì¤Îunsigned __int32·¿¤Ç¤¢¤ì¤Ð¡¤t¤Ï¡¤+1¤â¹Í褵¤ì¤¿Ãͤˤʤë¤Ï¤º¡¥32¥Ó¥Ã¥È¤ÎÀ°¿ô·¿¤È¤·¤Æ¡¤v * v¤Ç¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¹¤ë¤Î¤À¤í¤¦¤«¡©¤½¤ì¤È¤â¡¤ÆâÉô¤Ç°ì»þŪ¤ËÉâÆ°¾®¿ôÅÀ·¿¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¡©
¡¡¡¡var v1 = 0xFFffFFff; // v1¤Ï¡¤0xFFffFFff¤È¤Ê¤ê¡¤unsigned __int32·¿¤È¤·¤Æ°·¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤ë¡¥
¡¡¡¡var v2 = v1 & 0xFFffFFff; // v2¤Ï¡¤-1¤È¤Ê¤ê¡¤signed __int32·¿¤È¤·¤Æ°·¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤ë¡¥
¡¡¡¡var v3 = v2 >>> 0; // s2¤Ï¡¤0xFFffFFff¤È¤Ê¤ê¡¤unsigned __int32·¿¤È¤·¤Æ°·¤ï¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤ë¡¥
¡¡¡¡¢¨É½¼¨»þ¤Ë¤É¤¦¤Ê¤ë¤«¤À¤±¤Ç¤¢¤Ã¤Æ¡¤32¥Ó¥Ã¥È¤Î2¤ÎÊä¿ôɽ¸½¤È¤·¤Æ¤Ï¡¤¤É¤ì¤âÀµ¤·¤¤¡¥¤¬¡¤v2¤ò»ÈÍѤ·¤Æ³Ý»»Åù¤ò¹Ô¤¦¤È·ë²Ì¤ËÉé¿ô¤¬¸½¤ì¤¿¤ê¤·¤Æ¤Ó¤Ã¤¯¤ê¤¹¤ë¡¥¤É¤¦¤ä¤é¡¤ÊÑ¿ô¤ò´Þ¤à¿ôÃͤËÏÀÍý±é»»»Ò¤òŬÍѤ¹¤ë¤È¡¤ÅÓü¤Ë32¥Ó¥Ã¥ÈÀ°¿ô·¿¤È¤·¤Æ°·¤ï¤ì¤ë¤è¤¦¤À¡¥
¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤Ë¤è¤Ã¤Æ¡¤²¼°Ì·å¤Îñ½ã¤Ê·×»»¤¬¹ç¤ï¤Ê¤¯¤Ê¤ë¤Î¤ÏÀڼ¤ǡ¤¥á¥ë¥»¥ó¥Ì¡¦¥Ä¥¤¥¹¥¿¤Ç¤â¡È0x5D588B65¡É¤Ê¤É¤ÎÂ礤ʿô¤ò³Ý¤±¡¤¤½¤Î¸å¤Ë¾®¤µ¤Ê¿ô¤ò¤·¤¿¤ê¤¹¤ë²Õ½ê¤¬¤¢¤ê¤Þ¤¹¡¥°Ü¿¢»þ¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ê·×»»¤Ç²óÈò¤·¤Þ¤·¤¿¡¥
¡¡¡¡¸µ¥³¡¼¥É¡§
¡¡¡¡¡¡¡¡var v = (32¥Ó¥Ã¥È¤òͤ¨¤Ê¤¤Â礤ʿô)
¡¡¡¡¡¡¡¡var w = 0x5D588B65 * v + 2;
¡¡¡¡JavaScriptÍѽ¤Àµ¥³¡¼¥É
¡¡¡¡¡¡¡¡var v = (32¥Ó¥Ã¥È¤òͤ¨¤Ê¤¤Â礤ʿô)
¡¡¡¡¡¡¡¡var vh = (v & 0xffff0000) >>> 16, vl = v & 0xffff;
¡¡¡¡¡¡¡¡var w = ((vh * 0x5D588B65) << 16) + (vl * 0x5D588B65) + 2
¤Þ¤¿¡¤JavaScript¤Î¡È¿ôÃÍ·¿ÊÑ¿ô¡É¤ò¶¯À©Åª¤Ëunsigned __int32·¿¤ØÊÑ´¹¤¹¤ë¤Ë¤Ï¡¤¡ÈnumericVar >>>= 0¡É¤Ê¤É¤È¤¹¤ë¤ÈÎɤ¤¤Ç¤¹¡¥
---
Web¾å¤Î¥¤¥ó¥¿¥×¥ê¥¿¸À¸ì¤ò»ÈÍѤ·¡¤¥¹¡¼¥Ñ¡¼¥³¥ó¥Ô¥å¡¼¥¿Ê¤Υ·¥ß¥å¥ì¡¼¥·¥ç¥ó¤ò¹Ô¤¦É¬Íפ¬¤¢¤ëÊý¤Ï»²¹Í¤Ë¤·¤Æ²¼¤µ¤¤£÷
¤³¤¦¤¤¤¦¿ô³Ø·Ï¤Î¥Í¥¿¤ò¹Í¤¨¤Æ¤¤¤ë¤È¤¤Ï¡¤Á´¤Æ¤ò˺¤ì¤ÆËׯ¬¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¤º£²ó¤Ï¡¤´Ý°ìÆü¿²¤ë¤Î¤È¤´ÈÓ¤ò¿©¤Ù¤ë¤Î¤ò˺¤ì¤Æ¤¤¤Þ¤·¤¿¡¥¿²¤Æµ¯¤¤¿¤È¤¡¤¶õÊ¢¤Ç¡Èµ¯¤¾å¤¬¤ì¤Ê¤¤¡É¤Û¤É¡Ê޹ŽÞŽ×
---
¡Ú´ØÏ¢URI¡Û
¡¦¥á¥ë¥»¥ó¥Ì¥Ä¥¤¥¹¥¿¹Í°Æ¼Ô¤Î¥¦¥§¥Ö¥µ¥¤¥È
¡¦¾åµ¥µ¥¤¥È¤ÎJavaScript¸À¸ì°Ü¿¢ÈǤξҲð¥Ú¡¼¥¸
¡¦¥á¥ë¥»¥ó¥Ì¡¦¥Ä¥¤¥¹¥¿¡÷wikipedia
¡¦¥á¥ë¥»¥ó¥Ì¡¦¥Ä¥¤¥¹¥¿¤ÎJava¸À¸ì°Ü¿¢ÈÇ
¡¦µ¼»÷Íð¿ô¡÷wikipedia
¡Ú´ØÏ¢µ»ö¡Û
¡¦¥Ñ¥¹¥ï¡¼¥É¼«Æ°À¸À®
¡¦¤¢¤Ê¤¿¤Î¥ª¥ê¥¸¥Ê¥ë¥Ñ¥¹¥ï¡¼¥É¤òºîÀ®