รหัสเทียม ของ แมร์แซนทวิสเตอร์

รหัสเทียมต่อไปนี้ถูกสร้างมาจากการกระจายแบบปกติ (uniformly distributed) ของเลขจำนวนเต็ม 32 บิตในช่วง [0, 232 − 1] ด้วย MT19937

// สร้างอาเรย์ขนาด 624 ช่องสำหรับเก็บสถานะของตัวสร้างint[0..623] MTint index = 0// กำหนดค่าเริ่มต้นของตัวสร้างจากค่าของ seedfunction initialize_generator(int seed) {    MT[0] := seed    for i from 1 to 623 { //วงวนที่เริ่มตั้งแต่ช่องที่ 1 ของอาเรย์จนถึงช่องสุดท้าย        MT[i] := 32 บิตสุดท้ายของ (1812433253 * (MT[i-1] xor (ชิฟท์ขวา MT[i-1] ไป 30 บิต)) + i) // 0x6c078965    }}// นำตัวเลขเชิงสุ่มเทียมแบบลดลำดับที่ขึ้นกับค่าดัชนี th ที่ได้ไปใช้// เรียกใช้ฟังก์ชัน generate_numbers() สำหรับเลขทุกๆ 624 จำนวนfunction extract_number() {    if index == 0 {        generate_numbers()    }    int y := MT[index]    y := y xor (ชิฟท์ขวา y ไป 11 บิต)    y := y xor (ชิฟท์ซ้าย y ไป 7 บิต แล้ว and กับ 2636928640) // 0x9d2c5680    y := y xor (ชิฟท์ซ้าย y ไป 15 บิต แล้ว and กับ 4022730752) // 0xefc60000    y := y xor (ชิฟท์ขวา y ไป 18 บิต)    index := (index + 1) mod 624    return y}// สร้างอาเรย์สำหรับเก็บเลขที่ไม่ได้ลดลำดับลงขนาด 624 ช่องfunction generate_numbers() {    for i from 0 to 623 {        int y := บิตที่ 32 ของ (MT[i]) + 31 บิตสุดท้ายของ (MT[(i+1) mod 624])        MT[i] := MT[(i + 397) mod 624] xor (ชิฟท์ขวา y ไป 1 บิต)        if (y mod 2) != 0 { // y เป็นเลขคี่            MT[i] := MT[i] xor (2567483615) // 0x9908b0df        }    }}

ใกล้เคียง

แมร์แซนทวิสเตอร์ แมร์แยม มีร์ซอฆอนี แมร์แยม อีมอนีเยฮ์ แมร์แนปทาห์ แอร์แคนาดา แมร์ฮัยแรนิค แฌร์แม็ง กาต็องกา แอร์แบร์ที่ 2 เคานต์แห่งแวร์ม็องดัว แฮร์แบร์ท ฟ็อน คารายัน แมรีแห่งโมดีนา

แหล่งที่มา

WikiPedia: แมร์แซนทวิสเตอร์ http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/ http://www.iro.umontreal.ca/~lecuyer/myftp/papers/... http://adrianhoe.com/adrianhoe/projects/adamt19937... http://cybertiggyr.com/gene/jmt/ http://groups.google.com/group/comp.lang.c/browse_... http://groups.google.com/group/sci.crypt/browse_th... http://www.hackinghat.com/index.php/lisp/mersenne-... http://archive.msdn.microsoft.com/MersenneTwister http://www.mitrionics.com/?page=mersenne http://www.ntrand.com/