算法 – 一个好的和简单的随机度量

什么是最好的算法,采取一个长整数序列(例如100,000),并返回一个测量随机的序列是什么?

函数应该返回单个结果,如果该序列不是全部都是随机的,则说0,直到,如果完全随机,说1。如果序列有些随机,它可以在中间产生一些东西。 0.95可能是一个合理的随机序列,而0.50可能有一些非随机部分和一些随机部分。

如果我将Pi的前100,000个数字传递给函数,它应该给出一个非常接近于1的数字。如果我传递序列1,2,… 100,000,它应该返回0。

这种方式我可以轻松地获取30个数字序列,识别每个人是多么随机,并返回有关它们的相对随机性的信息。

有这样的动物吗?

你的问题自己回答。 “如果我要传递Pi的前100,000位数到函数,它应该给一个非常接近1”的数字,除了Pi的数字不是随机数,所以如果你的算法不识别一个非常特定的序列作为非随机然后它不是很好。

这里的问题是有许多类型的非随机性:
例如。 “121,351,991,7898651,12398469018461”或“33,27,99,3000,63,231”或甚至“14297141600464,14344872783104,8195342272783104,819534228736,3490442496”绝对不是随机的。

我认为你需要做的是确定对你很重要的随机性方面 –
分布,数字分布,缺乏共同因素,预期数量的素数,纤维瘤和其他“特殊”数字等。

PS。快速和脏(和非常有效)的随机测试是文件结束了大致相同的大小,你gzip它后。

http://stackoverflow.com/questions/1474382/a-good-and-simple-measure-of-randomness

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:算法 – 一个好的和简单的随机度量