जावास्क्रिप्ट
वह मजेदार था!
arr = []
index = 0
function init(seed) {
index = 0
arr[0] = seed
for (var i = 1; i < 624; i ++) {
arr[i] = (1812433253 * (arr[i-1] ^ (arr[i-1] >>> 30)) + i) | 0
}
}
function getNumber() {
if (index == 0) generateNumbers()
var y = arr[index]
y ^= (y >>> 11)
y ^= ((y << 7) & 2636928640)
y ^= ((y << 15) & 4022730752)
y ^= (y >>> 18)
index = (index + 1) % 624
return y
}
function generateNumbers() {
for (var i = 0; i < 624; i ++) {
var y = (arr[i] & 0x80000000) + (arr[(i+1) % 624] & 0x7fffffff)
arr[i] = arr[(i + 397) % 624] ^ (y >>> 1)
if (y % 2 != 0) arr[i] ^= 2567483615
}
}
// let's get our seed now from the SE API
var x = new XMLHttpRequest()
x.open('GET', 'http://api.stackexchange.com/2.2/answers?pagesize=10&order=desc&sort=activity&site=stackoverflow&filter=!Sri2UzKb5mTfr.XgjE', false)
x.send(null)
// we've got the answer data, now just add up all the numbers.
// only 4 digits at a time to prevent too big of a number.
var seed = 0
var numbers = x.responseText.match(/\d{0,4}/g)
for (var i = 0; i < numbers.length; i++) seed += +numbers[i]
init(seed)
for (var i = 0; i < 10; i++) console.log(getNumber())
मैंने जेएस में मेरसेन ट्विस्टर लिखा। फिर, मुझे एहसास हुआ कि मुझे कहीं से एक बीज प्राप्त करना था।
इसलिए, मैंने फैसला किया कि मैं इसे स्टैक एक्सचेंज एपीआई से प्राप्त करूंगा! (मैं प्रयोग कर सकता हूँlocalStorage
एक काउंटर का और वृद्धि , लेकिन यह कोई मजेदार नहीं है।) इसलिए, मैंने 10 सबसे हाल ही में सक्रिय जवाबों को पकड़ा, और फिर मैंने प्रतिक्रिया में सिर्फ 4 या उससे कम लगातार अंक लिए और उन्हें जोड़ा।
ये बीज हमेशा अलग होते हैं, क्योंकि स्टैक ओवरफ्लो लगातार अद्यतन हो रहा है (और मेरा कोटा नीचे जा रहा है!) संख्याओं में उत्तर आईडी, प्रश्न आईडी, स्कोर, अप / डाउनवोट काउंट्स, मालिक प्रतिनिधि / आईडी और आवरण डेटा (कोटा और इस तरह) शामिल हैं। )। एक रन पर मुझे 256845
, फिर 270495
, और फिर 256048
, आदि मिला।
यह कंसोल में 10 यादृच्छिक 32-बिट दो-पूरक संख्याओं को लॉग करता है। नमूना उत्पादन:
247701962
-601555287
1363363842
-1184801866
1761791937
-163544156
2021774189
2140443959
1764173996
-1176627822