ScalaCheck:选择具有自定义概率分布的整数
发布时间:2020-12-16 18:52:55 所属栏目:安全 来源:网络整理
导读:我想在 ScalaCheck中创建一个生成器,生成介于1和100之间的数字,但是对于接近1的数字具有钟形偏向. Gen.choose()在最小值和最大值之间随机分配数字: scala (1 to 10).flatMap(_ = Gen.choose(1,100).sample).toList.sortedres14: List[Int] = List(7,21,30,4
我想在
ScalaCheck中创建一个生成器,生成介于1和100之间的数字,但是对于接近1的数字具有钟形偏向.
Gen.choose()在最小值和最大值之间随机分配数字: scala> (1 to 10).flatMap(_ => Gen.choose(1,100).sample).toList.sorted res14: List[Int] = List(7,21,30,46,52,64,66,68,86,86) Gen.chooseNum()对上限和下限有一个额外的偏见: scala> (1 to 10).flatMap(_ => Gen.chooseNum(1,100).sample).toList.sorted res15: List[Int] = List(1,1,61,85,91,92,100,100) 我想要一个choose()函数,它会给我一个看起来像这样的结果: scala> (1 to 10).flatMap(_ => choose(1,2,5,11,18,35,49,100) 我看到choose()和chooseNum()采用隐含的Choose特征作为参数.我应该用吗? 解决方法
你可以使用Gen.frequency()
(1):
val frequencies = List( (50000,Gen.choose(0,9)),(38209,Gen.choose(10,19)),(27425,Gen.choose(20,29)),(18406,Gen.choose(30,39)),(11507,Gen.choose(40,49)),( 6681,Gen.choose(50,59)),( 3593,Gen.choose(60,69)),( 1786,Gen.choose(70,79)),( 820,Gen.choose(80,89)),( 347,Gen.choose(90,100)) ) (1 to 10).flatMap(_ => Gen.frequency(frequencies:_*).sample).toList res209: List[Int] = List(27,31,9,29,69,29) 我得到了https://en.wikipedia.org/wiki/Standard_normal_table#Complementary_cumulative的频率.代码只是表格的一个示例(%3或mod 3),但我认为你可以得到这个想法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- AngularJs ui-router 路由的简单介绍
- shell脚本报错:-bash:/bin/sh^M: bad interpreter:
- 远程调用通讯相关技术简介RMI、Hessian、Burlap、Httpinvok
- 对于未提交的更改,canDeactivate Guard服务中的Angular使用
- shell的简单批量curl接口脚本
- angularjs链接淡入/淡出转换
- angularjs – 使用Angular JS向元素添加类
- webservice客户端oauth2 Bearer 认证
- 我心中的十大信息化软件开发技术(转)
- typescript – 使用observable跟踪typeahead列表中的当前位