亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mersennetwister.java

?? 經典的貨郎擔問題解決辦法
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*** This code was modestly modified and completely reformatted, by Kent** Paul Dolan, from published code.  See accompanying file** TravellerDoc.html for details, credits, and status of the** modifications for your use.*/package com.well.www.user.xanthian.java.tools;/*** Because my opinions are brittle as old glass, and the last time they** were flexible, I was still teething, this code has been reformatted** to a coding style I like better and can read with eyes trained on** Pascal and Fortran.  Except for commenting out the main routine** included for testing, there shouldn't be any substantive changes,** just whitespace changes, comment style changes, and optional brackets** optioned-in wherever I caught them.  KPD.** ** Oops.  Now there are.  I added extra routines to match the ones in** Scott Robert Ladd's "Randomizer" class.** ** I also provided the option to use the MersenneTwister as a Design** Pattern "Solitary", with two getTwister accessor methods that create** an instance only once, and a static member to hold the soliton, so** that MersenneTwister as a class can own its own only instance, and** thus remove the need for consumers to pass around a solitary instance** as parameters or with accessor methods in creators for consumers.  By** not making the constructors private, I left this as an option up to** the self discipline of the programmer(s), rather than making such** usage mandatory.*/import java.io.*;import java.util.*;/*** <h3>Mersenne Twister and MersenneTwisterFast</h3>**** <p><b>Version 3</b>, based on version MT199937(99/10/29)** of the Mersenne Twister algorithm found at <a** href="http://www.math.keio.ac.jp/matumoto/emt.html">The Mersenne** Twister Home Page</a>.  By Sean Luke, June 2000.**** <p><b>MersenneTwister</b> is a drop-in subclass replacement for** java.util.Random.  It is properly synchronized and can be used in** a multithreaded environment.**** <p><b>MersenneTwisterFast</b> is not a subclass of java.util.Random.** It has the same public methods as Random does, however, and it is** algorithmically identical to MersenneTwister.  MersenneTwisterFast** has hard-code inlined all of its methods directly, and made all of** them final (well, the ones of consequence anyway).  Further, these** methods are <i>not</i> synchronized, so the same MersenneTwisterFast** instance cannot be shared by multiple threads.  But all this helps** MersenneTwisterFast achieve over twice the speed of MersenneTwister.**** <h3>About the Mersenne Twister</h3> <p>This is a Java version of** the C-program for MT19937: Integer version.  The MT19937 algorithm** was created by Makoto Matsumoto and Takuji Nishimura, who ask:** "When you use this, send an email to: matumoto@math.keio.ac.jp** with an appropriate reference to your work".  Indicate that this** is a translation of their algorithm into Java.**** <p><b>Reference. </b>** Makato Matsumoto and Takuji Nishimura,** "Mersenne Twister: A 623-Dimensionally Equidistributed Uniform** Pseudo-Random Number Generator",** <i>ACM Transactions on Modeling and Computer Simulation,</i>** Vol. 8, No. 1, January 1998, pp 3--30.**** <h3>About this Version</h3>** This version of the code implements the MT19937 Mersenne Twister** algorithm, with the 99/10/29 seeding mechanism.  The original** mechanism did not permit 0 as a seed, and odd numbers were not good** seed choices.  The new version permits any 32-bit signed integer.** This algorithm is identical to the MT19937 integer algorithm; real** values conform to Sun's float and double random number generator** standards rather than attempting to implement the half-open or** full-open MT19937-1 and MT199937-2 algorithms.**** <p>This code is based on standard MT19937 C/C++ code by Takuji** Nishimura, with suggestions from Topher Cooper and Marc Rieffel,** July 1997.  The code was originally translated into Java by Michael** Lecuyer, January 1999, and is Copyright (c) 1999 by Michael Lecuyer.** The included license is as follows:** <blockquote><font size="-1">**** The basic algorithmic work of this library (appearing in nextInt()** and setSeed()) is free software; you can redistribute it and or** modify it under the terms of the GNU Library General Public License** as published by the Free Software Foundation; either version 2 of** the License, or (at your option) any later version.**** <p>This library is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU** Library General Public License for more details.  You should have** received a copy of the GNU Library General Public License along** with this library; if not, write to the Free Foundation, Inc.,** 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA**** </font></blockquote>**** <h3>Bug Fixes</h3>**** <p>This implementation implements the bug fixes** made in Java 1.2's version of Random, which means** it can be used with earlier versions of Java.  See <a** href="http://www.javasoft.com/products/jdk/1.2/docs/api/java/util/Random.html">** the JDK 1.2 java.util.Random documentation</a> for further** documentation on the random-number generation contracts** made.  Additionally, there's an undocumented bug in the JDK** java.util.Random.nextBytes() method, which this code fixes.**** <h3>Important Note on Seeds</h3>**** <p> Just like java.util.Random, this generator accepts a long** seed but doesn't use all of it.  java.util.Random uses 48 bits.** The Mersenne Twister instead uses 32 bits (int size).  So it's** best if your seed does not exceed the int range.**** <h3>Timings On Different Java Versions</h3>**** <p>MersenneTwister can be used reliably on JDK version** 1.1.5 or above.  Earlier Java versions have serious bugs in** java.util.Random; only MersenneTwisterFast (and not MersenneTwister** nor java.util.Random) should be used with them. And why would** you use 'em anyway?  They're very slow, as you'll see.  Here are** some timings in milliseconds on a Sun Creator3D/Ultra 60 running** SunOS 5.6.**** <dl>** <dt><i>Standard C Version (gcc -O2)</i>** <dd>1070**** <dt><i>Standard C Version (Solaris cc -O)</i>** <dd>1210**** <dt><i>JDK 1.2.2 w/Hotspot Compiler (-O)</i>** <dd>MTF: 1785, MT: 3699, java.util.Random: 4849**** <dt><i>JDK 1.2.1/1.2.2 (-O)</i>** <dd>MTF: 1827, MT: 3868, java.util.Random: 4194**** <dt><i>JDK 1.1.8 (-O)</i>** <dd>MTF: 40509, MT: 45853, java.util.Random: 24604 <br>** Beats me why it's so slow...**** <dt><i>JDK 1.1.5 (-O)</i>** <dd>MTF: 4056, MT: 20478, java.util.Random: 19692**** <dt><i>JDK 1.0.2 (-O)</i>**** <dd>MTF: 71640, MT: 66176, java.util.Random: 67269 <br>**** <i>Important note:</i>  Do not MersenneTwister.java or** java.util.Random on a Java version this early!  Random number** generation in versions less than 1.1.5 has serious bugs.** </dl>   @version 3*/public class MersenneTwister extends java.util.Random implements Serializable{/*** Turn this into a soliton; there's no real need to have more than one** instance, and having it own its own only instance decouples it from** instantiating routines, making it much easier to share.*/   private static MersenneTwister m_soliton = null;  // Period parameters  private static final int N = 624;  private static final int M = 397;  private static final int MATRIX_A = 0x9908b0df;   // private static final * constant vector a  private static final int UPPER_MASK = 0x80000000; // most significant w-r bits  private static final int LOWER_MASK = 0x7fffffff; // least significant r bits  // Tempering parameters  private static final int TEMPERING_MASK_B = 0x9d2c5680;  private static final int TEMPERING_MASK_C = 0xefc60000;  // #define TEMPERING_SHIFT_U(y)  (y >>> 11)  // #define TEMPERING_SHIFT_S(y)  (y << 7)  // #define TEMPERING_SHIFT_T(y)  (y << 15)  // #define TEMPERING_SHIFT_L(y)  (y >>> 18)  private int mt[]; // the array for the state vector  private int mti; // mti==N+1 means mt[N] is not initialized  private int mag01[];  // a good initial seed (of int size, though stored in a long)  private static final long GOOD_SEED = 4357;/*** Implemented here because there's a bug in Random's implementation** of the Gaussian code (divide by zero, and log(0), ugh!), yet its** gaussian variables are private so we can't access them here.  :-(*/  private double __nextNextGaussian;  private boolean __haveNextNextGaussian;/*** Constructor using the default seed.*/  public MersenneTwister()  {    super(GOOD_SEED);  // just in case    setSeed(GOOD_SEED);  }  public static synchronized MersenneTwister getTwister()  {    if ( m_soliton == null ) { m_soliton = new MersenneTwister(); }    return m_soliton;  }/*** Constructor using a given seed.  Though you pass this seed in as** a long, it's best to make sure it's actually an integer.*/  public MersenneTwister(final long seed)  {    super(seed);    // just in case    setSeed(seed);  }  public static MersenneTwister getTwister(final long seed)  {/*** Notice that, as part of making this a soliton, the use that way of** multiple constructor calls with different seeds goes away.  If the** application is so disorganized it tries to seed the Twister multiple** times, ignore subsequent attempts.  The intention is that the client** application should create one instance in its setup procedings, and** do any desired seeding there.*/    if ( m_soliton == null ) { m_soliton = new MersenneTwister(seed); }    return m_soliton;  }/*** Initalize the pseudo random number generator.  This is the old** seed-setting mechanism for the original Mersenne Twister algorithm.** You must not use 0 as your seed, and don't pass in a long that's** bigger than an int (Mersenne Twister only uses the first 32 bits** for its seed).  Also it's suggested that for you avoid even-numbered** seeds in this older seed-generation procedure.***/  synchronized public void setSeedOld(final long seed)  {/*** it's always good style to call super*/    super.setSeed(seed);/*** Due to a bug in java.util.Random clear up to 1.2, we're doing our** own Gaussian variable.*/    __haveNextNextGaussian = false;    mt = new int[N];/*** setting initial seeds to mt[N] using the generator Line 25 of** Table 1 in [KNUTH 1981, The Art of Computer Programming Vol. 2** (2nd Ed.), pp102]**** the 0xffffffff is commented out because in Java ints are always** 32 bits; hence i & 0xffffffff == i*/    mt[0]= ((int)seed); // & 0xffffffff;    for (mti = 1; mti < N; mti++)    {      mt[mti] = (69069 * mt[mti-1]); //& 0xffffffff;    }/***  mag01[x] = x * MATRIX_A  for x=0,1*/    mag01 = new int[2];    mag01[0] = 0x0;    mag01[1] = MATRIX_A;  }/*** An alternative, more complete, method of seeding the pseudo random** number generator.  array must be an array of 624 ints, and they** can be any value as long as they're not *all* zero.*/  synchronized public void setSeed(final int[] array)  {/*** it's always good style to call super -- we'll use MT's canonical** random number, but it doesn't really matter.*/    super.setSeed(4357);/***  Due to a bug in java.util.Random clear up to 1.2, we're/ doing**  our own Gaussian variable.*/    __haveNextNextGaussian = false;    mt = new int[N];    System.arraycopy(array,0,mt,0,N);    mti=N;    // mag01[x] = x * MATRIX_A  for x=0,1    mag01 = new int[2];    mag01[0] = 0x0;    mag01[1] = MATRIX_A;  }/*** Initalize the pseudo random number generator.  Don't pass in a** long that's bigger than an int (Mersenne Twister only uses the** first 32 bits for its seed).***/  synchronized public void setSeed(final long seed)  {/*** it's always good style to call super*/    super.setSeed(seed);/*** seed needs to be cast into an int first for this to work*/    int _seed = (int)seed;/*** Due to a bug in java.util.Random clear up to 1.2, we're doing our** own Gaussian variable.*/    __haveNextNextGaussian = false;    mt = new int[N];    for (int i=0;i<N;i++)    {      mt[i] = _seed & 0xffff0000;      _seed = 69069 * _seed + 1;      mt[i] |= (_seed & 0xffff0000) >>> 16;      _seed = 69069 * _seed + 1;    }    mti=N;    // mag01[x] = x * MATRIX_A  for x=0,1    mag01 = new int[2];    mag01[0] = 0x0;    mag01[1] = MATRIX_A;  }/*** Returns an integer with <i>bits</i> bits filled with a random** number.*/  synchronized protected int next(final int bits)  {    int y;    if (mti >= N)   // generate N words at one time    {        int kk;        for (kk = 0; kk < N - M; kk++)        {          y = (mt[kk] & UPPER_MASK) | (mt[kk+1] & LOWER_MASK);          mt[kk] = mt[kk+M] ^ (y >>> 1) ^ mag01[y & 0x1];        }        for (; kk < N-1; kk++)        {          y = (mt[kk] & UPPER_MASK) | (mt[kk+1] & LOWER_MASK);          mt[kk] = mt[kk+(M-N)] ^ (y >>> 1) ^ mag01[y & 0x1];        }        y = (mt[N-1] & UPPER_MASK) | (mt[0] & LOWER_MASK);        mt[N-1] = mt[M-1] ^ (y >>> 1) ^ mag01[y & 0x1];        mti = 0;    }    y = mt[mti++];    y ^= y >>> 11;                          // TEMPERING_SHIFT_U(y)    y ^= (y << 7) & TEMPERING_MASK_B;       // TEMPERING_SHIFT_S(y)    y ^= (y << 15) & TEMPERING_MASK_C;      // TEMPERING_SHIFT_T(y)    y ^= (y >>> 18);                        // TEMPERING_SHIFT_L(y)    return y >>> (32 - bits);    // hope that's right!  }/*** If you've got a truly old version of Java, you can omit these two** next methods.*/  private synchronized void writeObject(final ObjectOutputStream out)    throws IOException  {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区在线观看视频| 蜜桃视频免费观看一区| 国产一区在线不卡| 国产女人aaa级久久久级 | 激情综合色综合久久| 欧美一级电影网站| 国产精一区二区三区| 国产欧美一区二区精品久导航| av在线不卡电影| 亚洲成人自拍偷拍| 欧美精品一区二区三区高清aⅴ | 天堂午夜影视日韩欧美一区二区| 在线观看亚洲a| 青青草国产精品97视觉盛宴| 久久综合视频网| 97久久人人超碰| 亚洲丰满少妇videoshd| 精品国产乱码久久久久久夜甘婷婷 | 捆绑调教美女网站视频一区| 久久综合狠狠综合久久激情| 成人爽a毛片一区二区免费| 亚洲精品乱码久久久久久日本蜜臀| 欧美午夜精品久久久久久孕妇| 男女激情视频一区| 亚洲欧洲av在线| 欧美videos大乳护士334| 丁香婷婷综合激情五月色| 亚洲综合激情网| 国产校园另类小说区| 欧美日韩免费视频| 成人国产精品视频| 日本欧美一区二区三区| 亚洲特级片在线| 精品电影一区二区| 欧美唯美清纯偷拍| 懂色av一区二区三区免费观看| 亚洲国产日韩在线一区模特| 久久综合久久鬼色中文字| 欧洲另类一二三四区| 国产精品一区二区在线观看网站| 亚洲国产综合视频在线观看| 国产欧美日韩在线观看| 欧美一区二区在线免费观看| av午夜精品一区二区三区| 久久精品国产**网站演员| 一区二区三区小说| 国产欧美一区在线| 日韩欧美成人激情| 欧美久久一区二区| 91年精品国产| 粉嫩高潮美女一区二区三区| 蜜臀av在线播放一区二区三区| 亚洲日本丝袜连裤袜办公室| 国产欧美日韩视频一区二区| 精品伦理精品一区| 欧美日本乱大交xxxxx| 色8久久精品久久久久久蜜| 丁香天五香天堂综合| 九色综合国产一区二区三区| 天堂一区二区在线| 午夜精品久久久久久| 夜夜精品浪潮av一区二区三区| 国产精品福利在线播放| 国产三级一区二区| 国产亚洲精品bt天堂精选| 日韩区在线观看| 91麻豆精品国产91久久久更新时间| 一本大道综合伊人精品热热 | 欧美亚洲高清一区| 在线看国产一区二区| 91亚洲精品乱码久久久久久蜜桃 | 麻豆91精品91久久久的内涵| 一区二区三区久久久| 亚洲你懂的在线视频| 日韩美女精品在线| 亚洲视频一二三| 亚洲精品中文字幕乱码三区| 亚洲精品视频在线观看免费| 中文字幕成人av| 国产精品久久久久久久久免费丝袜| 国产日韩欧美精品综合| 国产农村妇女毛片精品久久麻豆| 日本一区二区三区dvd视频在线| 欧美精品一区二区久久久| 亚洲精品一区二区三区香蕉| 久久久777精品电影网影网| 久久精品一二三| 久久精品人人做人人爽人人| 国产午夜精品一区二区| 国产精品人成在线观看免费| 最好看的中文字幕久久| 亚洲综合免费观看高清完整版在线 | 欧美aⅴ一区二区三区视频| 蜜臂av日日欢夜夜爽一区| 九色|91porny| 成人av免费网站| 欧美亚洲综合在线| 3d成人h动漫网站入口| 337p粉嫩大胆色噜噜噜噜亚洲| 国产日韩欧美在线一区| 亚洲日本在线看| 日韩中文字幕1| 国产在线精品国自产拍免费| 99精品欧美一区二区三区综合在线| 欧美伊人久久大香线蕉综合69| 日韩午夜激情视频| 欧美国产成人在线| 亚洲自拍偷拍av| 国产一区高清在线| 色播五月激情综合网| 日韩欧美一区二区在线视频| 国产女人aaa级久久久级| 亚洲午夜视频在线观看| 久久草av在线| 色猫猫国产区一区二在线视频| 欧美另类videos死尸| 国产亚洲综合在线| 亚洲bt欧美bt精品777| 国产精品亚洲第一区在线暖暖韩国 | 国产一区 二区 三区一级| www..com久久爱| 337p亚洲精品色噜噜| 国产精品久久久久久亚洲毛片| 亚洲精品高清在线| 国产精品一区二区免费不卡| 色婷婷激情久久| 久久久久国色av免费看影院| 一区二区免费在线播放| 岛国一区二区三区| 欧美丰满高潮xxxx喷水动漫| 国产精品国产三级国产普通话三级| 日韩精品国产欧美| 色天天综合久久久久综合片| 亚洲精品一线二线三线| 三级不卡在线观看| 色婷婷国产精品综合在线观看| 国产夜色精品一区二区av| 日韩中文欧美在线| 欧美午夜精品理论片a级按摩| 亚洲国产成人午夜在线一区| 裸体在线国模精品偷拍| 欧美日韩国产系列| 亚洲激情自拍偷拍| av影院午夜一区| 国产亚洲制服色| 久久国产福利国产秒拍| 欧美日韩精品一区二区三区四区 | 欧美另类久久久品| 亚洲综合一二三区| 99精品在线免费| 欧美精彩视频一区二区三区| 国内精品嫩模私拍在线| 日韩欧美一级在线播放| 天堂一区二区在线| 欧美吞精做爰啪啪高潮| 亚洲精品成人悠悠色影视| 成人av先锋影音| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲男帅同性gay1069| 成人性色生活片| 国产欧美一二三区| 成人福利电影精品一区二区在线观看 | 亚洲国产精品av| 粉嫩绯色av一区二区在线观看| 久久美女艺术照精彩视频福利播放| 久久91精品久久久久久秒播| 精品久久久久久综合日本欧美| 日韩精品成人一区二区在线| 欧美日韩色一区| 日韩激情在线观看| 日韩小视频在线观看专区| 日韩成人伦理电影在线观看| 欧美一区二区三级| 麻豆国产精品一区二区三区| 91麻豆精品久久久久蜜臀| 日本欧美一区二区| 精品国产区一区| 成人午夜视频网站| 亚洲色图20p| 欧美老女人在线| 久88久久88久久久| 国产偷v国产偷v亚洲高清| 成人黄色小视频在线观看| 国产精品久久久久7777按摩| 91啪在线观看| 亚洲成人激情社区| 欧美刺激脚交jootjob| 丁香六月久久综合狠狠色| 亚洲精品免费视频| 欧美一区二区三区不卡| 国产成人综合在线| 亚洲伦理在线精品| 欧美一卡在线观看| 国产露脸91国语对白| ㊣最新国产の精品bt伙计久久| 91福利精品视频| 久久精品国产**网站演员| 国产精品久久夜| 91精品午夜视频| 懂色av一区二区夜夜嗨|