March 2014 update
This commit is contained in:
parent
09687c4926
commit
a25938f123
1846 changed files with 21876 additions and 5203 deletions
|
|
@ -0,0 +1,25 @@
|
|||
r := InitR(292929)
|
||||
|
||||
Loop, 10
|
||||
Out .= (A_Index + 219) ":`t" GetRand(r) "`n"
|
||||
|
||||
MsgBox, % Out
|
||||
|
||||
GetRand(r) {
|
||||
i := Mod(r["j"], 55)
|
||||
, r[i] := Mod(r[i] - r[Mod(i + 31, 55)], r["m"])
|
||||
, r["j"] += 1
|
||||
return, (r[i] < 0 ? r[i] + r["m"] : r[i])
|
||||
}
|
||||
|
||||
InitR(Seed) {
|
||||
r := {"j": 0, "m": 10 ** 9}, s := {0: Seed, 1: 1}
|
||||
Loop, 53
|
||||
s[A_Index + 1] := Mod(s[A_Index - 1] - s[A_Index], r["m"])
|
||||
Loop, 55
|
||||
r[A_Index - 1] := s[Mod(34 * A_Index, 55)]
|
||||
Loop, 165
|
||||
i := Mod(A_Index + 54, 55)
|
||||
, r[i] := Mod(r[i] - r[Mod(A_Index + 30, 55)], r["m"])
|
||||
return, r
|
||||
}
|
||||
22
Task/Subtractive-generator/Clojure/subtractive-generator.clj
Normal file
22
Task/Subtractive-generator/Clojure/subtractive-generator.clj
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
(defn xpat2-with-seed
|
||||
"produces an xpat2 function initialized from seed"
|
||||
[seed]
|
||||
(let [e9 1000000000
|
||||
fs (fn [[i j]] [j (mod (- i j) e9)])
|
||||
s (->> [seed 1] (iterate fs) (map first) (take 55) vec)
|
||||
rinit (map #(-> % inc (* 34) (mod 55) s) (range 55))
|
||||
r-atom (atom [54 (int-array rinit)])
|
||||
update (fn [[nprev r]]
|
||||
(let [n (-> nprev inc (mod 55))
|
||||
rx #(get r (-> n (- %) (mod 55)))
|
||||
rn (-> (rx 55) (- (rx 24)) (mod e9))
|
||||
_ (aset-int r n rn)]
|
||||
[n r]))
|
||||
xpat2 #(let [[n r] (swap! r-atom update)]
|
||||
(get r n))
|
||||
_ (dotimes [_ 165] (xpat2))]
|
||||
xpat2))
|
||||
|
||||
(def xpat2 (xpat2-with-seed 292929))
|
||||
|
||||
(println (xpat2) (xpat2) (xpat2)) ; prints: 467478574 512932792 539453717
|
||||
23
Task/Subtractive-generator/Python/subtractive-generator-2.py
Normal file
23
Task/Subtractive-generator/Python/subtractive-generator-2.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import collections
|
||||
|
||||
_ten2nine = 10**9
|
||||
|
||||
class Subtractive_generator():
|
||||
|
||||
def __init__(self, seed=292929):
|
||||
self.r = collections.deque(maxlen=55)
|
||||
s = collections.deque(maxlen=55)
|
||||
s.extend([seed, 1])
|
||||
s.extend((s[n-2] - s[n-1]) % _ten2nine for n in range(2, 55))
|
||||
self.r.extend(s[(34 * (n+1)) % 55] for n in range(55))
|
||||
for n in range(219 - 54):
|
||||
self()
|
||||
|
||||
def __call__(self):
|
||||
r = self.r
|
||||
r.append((r[0] - r[31]) % _ten2nine)
|
||||
return r[54]
|
||||
|
||||
if __name__ == '__main__':
|
||||
srand = Subtractive_generator()
|
||||
print([srand() for i in range(5)])
|
||||
Loading…
Add table
Add a link
Reference in a new issue