Archive 2015 年 5 月 15 日

解决起卦的九宫的同余的概率分布问题

  无论是采用九宫模拟还是八卦模拟,产生随机数都会遇到一个问题,即在9或8上不能平均分布,比如产生的随机数范围是0~65535,一共65536个数,而6+5+5+3+6 = 25,2+5=7,余下为7,这会导致生成的随机数分布概率并不均等,所以它们无法满足在9的空间上能够平均分布,这是不符合自然现状的。如果是对于8来说,已知65536为2的16次方,而2的15次方是可以被8整除的,所以分布下来就多了2个,同样会导致在8的空间分布上不平均。   有一种思路是取一个足够大的数,把误差降到最低,比如取值范围为2的64次方,那么多出来的2个不平均分布,只占1/264    的比重影响,可以说是微乎极微。   不过这样始终让人感觉不完美,所以为了追求完美,完全可以改进一下。   因为通常用八卦时不一定要用九宫,用九宫时一定要用到八卦,所以这个问题并不难解决。   需要构造出一个方法,让它都能整除,即存在一个数S        S%8=0  S%9=0   并且 S =2N (n=0,1,2,3,4....)   但这个是没有解的,所以是不现实的,那么就把问题改一下:   如果是2某个次方加上一个数满足这个条件的话,那就会大大减低计算量。     于是搜了一下解集,发现如下可以满足条件:        式  次方值   2^6+8  64   2^12+8 4096   2^18+8 262144   2^24+8 16777216   2^30+8…

Read More

解决了起卦使用真随机数的问题

  对于灵机起卦的术数来说,要做到术数上的准确预测,先要找到目前不可预测的数据,然后从这个数据才可推出可预测的结果,这是个颇为矛盾的逻辑。   而不可预测的数据,自然是真随机数了,至于真正的随机数到底是存在还是不存在,这个很难说,是个哲学问题,万物虽然都是概率的呈现,但是概率又是什么决定的?   回正题,一开始从淘宝上查有没有硬件的真随机数发生器,可惜万能的淘宝令人失望了,然后检查电脑的CPU是Inter的,Inter的CPU正好提供有真随机数的发生器,于是动念头想直接访问Inter的CPU,查了一下,需要下载Inter的数学库,于是就去慢慢下载。   下完后竟然发现不能运行,因为版本太老不支持XCode6,所以竟然连安装都不让安装,只好放弃。   于是又查有没有其它办法可以通过这种方式获取随机数,花了许久,运气不错发现篇文章表示Inter提供直接使用汇编指令来访问CPU。   然后麻烦就来了,这个是MAC的系统,编译出来是dylib库,然后尝试通过mono去调用,无论如何也提示调用不了,找不到文件。然后又继续翻网站,终于发现,原来编译时,只能编译成32位的,这样Mono才能调用,来回折腾了几次后,成功实现真随机数的调用了。   不得不说,国内的资料实在不好查,还是英文网站上的资料比较全一些,虽然折腾了一个晚上,但还是值得的,能够实现真随机数的调用,能够解决很多问题。   产生的真随机数图如下:      而相同绘图算法C#生成随机数如下:      比较奇怪的是,差异并不是很明显,是MAC底层的随机数算法做得极好的缘故?所以近似于真实随机数的效果了?   不过想来伪随机数与真随机数还是会有差别,这个需要用大量的卦例进一步检验了。      其它还有一些真随机数的生成办法,不过没有实现,这里也提一下:   在IPAD或是IPhone或是Android机上,是没有CPU能够支持随机数的,要做到能在这些上面更准确的起卦,尤其是梅花卦,应该考虑如下方案来生成熵池起卦:   1、通过访问重力感应,求测者随意摇晃手机,从中搜集精确的数据用来起卦,类似于真实的摇签或摇卦,据在下所知,现在还没有真正如此来实现的,大多的摇晃起卦,实际上是早就用伪随机数起好了,然后摇晃只是发个声而已。   2、求测者随意在屏幕上乱点乱划,然后搜集数据来综合起卦,这样得到的卦测算起来就更加方便,不过这种效果直觉上有略有折扣。   3、打开麦克风,通过麦克风搜集实际的噪音,动态调整振幅后,随机采集数据。这个还可以更加改进,让求测者念一句话,因为发音总有变化,通过提取变化,可以得到真实随机的采样。     4、对使用者用摄像头拍照,根据照片的色彩矩阵做一个运算,从而得到卦,这种起卦方式应该是比较灵验的,顺便还能让卦师结合面相也一起看了,不过有影响隐私的嫌疑。     以上四种起卦方式,可以在移动设备上进行。

Read More