在写遗传算法,需要产生一些0~1的随机数,先用的curandGenerateUniform,但是发现参数的随机数在实际中情况不好。后面觉得是因为这样产生的随机数是符合均匀分布的。而我要的随机数要是随机的,不要他们之间满足任何分布。后面看到curandGenerate满足这个条件,但是他产生的是32bit的随机数,并不是0~1的。。请问一下斑竹,我应该怎么才能得到0~1的数与数之间没有任何关系的随机数呢?谢谢
楼主您有概念错误:
一个区间内真随机数序列必然是均匀分布的。而衡量常用的伪随机数的质量好坏也是看分布是否均匀。
您不能因为它分布均匀了,就指责它的质量不好,恰恰相反,这是curand结果高质量的表现。
反之,如果真按您的要求不满足均匀分布,那么必然会导致:
此区间内,落在某些范围上的概率较大,而落在另外的范围上的概率较小,那么我们可以预测下一个数有较大的概率在某个范围内, 您都能预测了,那还叫“随机”么?
请三思。
感谢您的来访。
以及,
在您有0-1上均匀分布的发生器后,您可以通过数学变化,得到另外一串随机数序列,使得该串随机数满足其他分布律的(话说您真的需要吗?)。您觉得呢?
哦。。谢谢斑竹。。我对均匀分布的理解的概念上应该是有误差。我以为产生均匀分布的随机数不好呢。。嗯。。多谢斑竹指导。。
您客气了。
实际上我们说起随机往往想到数学中的“随机变量”之类的,而说到随机变量之类的往往要讨论分布规律。这就不免让你想到满足什么样的分布规律才好的问题了,这也是人之常情。
但是这里的产生随机数往往只是要求“随机性”,要求序列中的下一个数字完全无法预测,例如您的随机数序列要求是1,2,3…10这10个数字构成的,那么要求“下一个数字无法”预测也就隐含了它必须在1-10上的取值可能是均等的,而不是数学中讨论的要满足一定的分布规律才好了。
感谢来访。