เมนูนำทาง
แมร์แซนทวิสเตอร์ รหัสเทียมรหัสเทียมต่อไปนี้ถูกสร้างมาจากการกระจายแบบปกติ (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/