一段极度DT的代码,利用md5算法产生一段随机数表。不知道干什么用,或许可以在蒙特卡洛方法里使用。
主要是利用系统时间做种子(python的内部time函数),带入到md5函数中,得到一个字符串x,抽取其中的数字(0~9)附加到字符串C中,重新计算x的md5值,直到c的长度达到要求。为了防止陷入循环,对字符串x加了一个空格做微扰。最后,格式输出字符串c。
做了一个大概的统计,每个数字出现的几率大约都在0.1左右,基本符合随机分布,当然,仅限于0~9范围内。
import hashlib,time
f=open('Rom.txt','w')
start=str(time.time())
ALL=8100
c=str()
while len(c)
当然,可以做一个变换,可以减少每行的输出值,作为一个[0,1)左闭右开区间的一个超长的随机数表。
crypto = require ‘crypto’
md5 = (s) -> crypto.createHash(‘md5’).update(s).digest()
exports.tortoiseAndHare = (f,init) ->
# tortoise = hare = init
# do go = ->
# tortoise = f tortoise
# hare = f f hare
# go() if tortoise != hare
# FIXME: stack overflows, no tail-recursion optimization?
tortoise = f init
hare = f f init
while tortoise != hare
tortoise = f tortoise
hare = f f hare
mu = 0
tortoise = init
while tortoise != hare
tortoise = f tortoise
hare = f hare
mu++
len = 1
hare = f tortoise
while tortoise != hare
hare = f hare
len++
[len, mu, hare]
console.log tortoiseAndHare md5, (new Date).toString()
opera testing
say ‘0123456789’
肿么可能。。。