using System;
public class Test
{
static ulong m_seed = 88172645463325252;
public static ulong xorshift64()
{
m_seed = m_seed ^ (m_seed << 7);
return m_seed = m_seed ^ (m_seed >> 9);
}
public static double rand1()
{
return (double)xorshift64() / (double)0xffffffffffffffff;
}
public static void Main()
{
// 0x0000000000000000~0xffffffffffffffff
for (int i = 0; i < 10; ++i) {
Console.WriteLine("[" + (i+1).ToString() + "]:" + xorshift64().ToString());
}
// 0 ~ 9
for (int i = 0; i < 10; ++i) {
Console.WriteLine("[" + (i+1).ToString() + "]:" + (xorshift64() % 10).ToString());
}
// 0 ~ 1
for (int i = 0; i < 10; ++i) {
Console.WriteLine("[" + (i+1).ToString() + "]:" + rand1().ToString());
}
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJc3RhdGljIHVsb25nIG1fc2VlZCA9IDg4MTcyNjQ1NDYzMzI1MjUyOwoJCglwdWJsaWMgc3RhdGljIHVsb25nIHhvcnNoaWZ0NjQoKQoJewoJCW1fc2VlZCA9IG1fc2VlZCBeIChtX3NlZWQgPDwgNyk7CgkJcmV0dXJuIG1fc2VlZCA9IG1fc2VlZCBeIChtX3NlZWQgPj4gOSk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgZG91YmxlIHJhbmQxKCkKCXsKCQlyZXR1cm4gKGRvdWJsZSl4b3JzaGlmdDY0KCkgLyAoZG91YmxlKTB4ZmZmZmZmZmZmZmZmZmZmZjsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCS8vIDB4MDAwMDAwMDAwMDAwMDAwMO+9njB4ZmZmZmZmZmZmZmZmZmZmZgoJCWZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgewoJCQlDb25zb2xlLldyaXRlTGluZSgiWyIgKyAoaSsxKS5Ub1N0cmluZygpICsgIl06IiArIHhvcnNoaWZ0NjQoKS5Ub1N0cmluZygpKTsKCQl9CgkJLy8gMCDvvZ4gOQoJCWZvciAoaW50IGkgPSAwOyBpIDwgMTA7ICsraSkgewoJCQlDb25zb2xlLldyaXRlTGluZSgiWyIgKyAoaSsxKS5Ub1N0cmluZygpICsgIl06IiArICh4b3JzaGlmdDY0KCkgJSAxMCkuVG9TdHJpbmcoKSk7CgkJfQoJCS8vIDAg772eIDEKCQlmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoIlsiICsgKGkrMSkuVG9TdHJpbmcoKSArICJdOiIgKyByYW5kMSgpLlRvU3RyaW5nKCkpOwoJCX0KCX0KfQ==