tbo*_*one 3 python random jupyter-notebook
我非常想将最后一个单元格的输出保存在一个 txt 文件中。
q = [rng.next () for _ in range (0, 25000000)]
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用 pandas 数据框,但我需要 txt 文件来执行 Diehard 测试。在 jupyter notebook 中可行吗?执行Dieharder Suite可能需要什么类型的数据?
我几乎可以肯定,一旦我做了类似的事情,不幸的是我不记得是怎么做的,我找不到明确的答案
下面是我的 LCG 随机数生成器的代码:
import numpy as np
class LCG(object):
UZERO: np.uint32 = np.uint32(0)
UONE : np.uint32 = np.uint32(1)
def __init__(self, seed: np.uint32, a: np.uint32, c: np.uint32) -> None:
self._seed: np.uint32 = np.uint32(seed)
self._a : np.uint32 = np.uint32(a)
self._c : np.uint32 = np.uint32(c)
def next(self) -> np.uint32:
self._seed = self._a * self._seed + self._c
return self._seed
def seed(self) -> np.uint32:
return self._seed
def set_seed(self, seed: np.uint32) -> np.uint32:
self._seed = seed
def skip(self, ns: np.int32) -> None:
"""
Signed argument - skip forward as well as backward
The algorithm here to determine the parameters used to skip ahead is
described in the paper F. Brown, "Random Number Generation with Arbitrary Stride,"
Trans. Am. Nucl. Soc. (Nov. 1994). This algorithm is able to skip ahead in
O(log2(N)) operations instead of O(N). It computes parameters
A and C which can then be used to find x_N = A*x_0 + C mod 2^M.
"""
nskip: np.uint32 = np.uint32(ns)
a: np.uint32 = self._a
c: np.uint32 = self._c
a_next: np.uint32 = LCG.UONE
c_next: np.uint32 = LCG.UZERO
while nskip > LCG.UZERO:
if (nskip & LCG.UONE) != LCG.UZERO:
a_next = a_next * a
c_next = c_next * a + c
c = (a + LCG.UONE) * c
a = a * a
nskip = nskip >> LCG.UONE
self._seed = a_next * self._seed + c_next
#%%
np.seterr(over='ignore')
a = np.uint32(1664525)
c = np.uint32(1013904223)
seed = np.uint32(1)
rng = LCG(seed, a, c)
q = [rng.next() for _ in range(0, 25000000)]
Run Code Online (Sandbox Code Playgroud)
在另一个单元格中运行
%%capture cap --no-stderr
print(q)
Run Code Online (Sandbox Code Playgroud)
然后又是另一个单元格
with open('output.txt', 'w') as f:
f.write(cap.stdout)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6675 次 |
| 最近记录: |