当前位置:  开发笔记 > 运维 > 正文

随机值的测试 - 对这种方法的思考?

如何解决《随机值的测试-对这种方法的思考?》经验,为你挑选了3个好方法。

好的,我一直在研究随机图像选择器和队列系统(所以你不经常看到相同的图像).

一切都在游泳(就我的蹩脚代码而言),直到我得到随机位.我想测试它,但你如何测试呢?没有Debug.Assert(i.IsRandom)(遗憾地):D

所以,在用一些茶浇水之后,我把它的大脑放在上面并提出以下内容,我只是想知道我是否能想到你的想法?

基本上我知道随机位是问题,所以我把它撕成了一个委托(然后将其传递给对象构造函数).

然后我创建了一个几乎与实时代码执行相同逻辑的类,但是记住在私有变量中选择的值.

然后我把那个代表扔到了直播课上并对其进行了测试:

Debug.Assert(myObj.RndVal == RndIntTester.ValuePassed);

但我忍不住想,我是在浪费时间吗?我通过大量的迭代运行它,看看它是否随时崩溃等.

你觉得我在浪费时间吗?或者我可以逃脱:

令人敬畏的随机数发生器

GateKiller的回答让我想起了这个:

迪尔伯特随机

更新到澄清

我应该补充一点,我基本上不希望从Y大小的池中看到与X次相同的结果.

添加测试容器基本上允许我查看是否"随机"选择了任何先前选择的图像.

我在技术上认为这里的东西不是在RNG中进行测试(因为我从未编写过该代码),而是我希望从有限的池中随机获得结果,并且我想跟踪它们.

Amy B.. 6

根据要求进行测试:"因此您不会经常看到相同的图像"

要求100张图片.你经常看到一个图像吗?



1> Amy B..:

根据要求进行测试:"因此您不会经常看到相同的图像"

要求100张图片.你经常看到一个图像吗?



2> moonshadow..:

在维基百科上有一个方便的统计随机性测试列表和相关研究.请注意,您肯定不知道某个源是大多数这些源的真正随机源,您只能排除某些可以轻松预测的方式.



3> erickson..:

如果您有一组固定的项目,并且您不希望它们过于频繁地重复,则随机地对该集合进行随机播放.然后你将确保你连续两次看不到相同的图像,感觉你正在收听Top 20收音机等等.你会在重复之前完成整个收集.

Item[] foo = …
for (int idx = foo.size(); idx > 1; --idx) {
  /* Pick random number from half-open interval [0, idx) */
  int rnd = random(idx); 
  Item tmp = foo[idx - 1];
  foo[idx - 1] = foo[rnd];
  foo[rnd] = tmp;
}

如果您有太多的项目要一次收集和随机播放(存储库中数以万计的图像),您可以为同一种方法添加一些分而治之.随机播放图像组,然后对每组进行随机播放.

听起来可能适用于修订后的问题陈述的略有不同的方法是让"图像选择器"实现将其最近的选择历史保留在Y最长的队列中.在返回图像之前,它会测试它是否X已经在队列中时间,如果是,它会随机选择另一个,直到它找到一个通过.

如果您真的要求测试随机数生成器的质量,我将不得不打开统计书.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有