在Kdb+中,如何使用"roll“函数使生成的随机数落在不是从0开始的范围内?例如,如果我希望范围在2-10而不是0-10之间,该怎么办?
我必须在代码中添加什么才能使它落入一个范围,而不是默认的0-x?我尝试并寻找了每种方法,但似乎找不到一个。
发布于 2019-02-25 00:36:03
你也可以从0到8滚动,然后加两个。这不需要预先生成列表
q)2+5?9
10 2 7 10 7
假设你想要2-10个
发布于 2019-02-24 06:53:47
// quick and simple method
q)10?2+til 8
6 2 4 3 4 3 4 5 4 7
// or function (x)=num to be dealt, (y) start range, (z) end range
q)f:{x?y+til 1+z-y}
q)f[10;10;20]
12 17 10 11 19 12 11 18 18 11
发布于 2019-02-24 06:56:57
如果您在右边的参数中提供了一个列表,那么您将从该列表中获得一个随机值。要滚动2-10之间的随机范围,可以使用til
生成范围:
q)2+til 9
2 3 4 5 6 7 8 9 10
q)1?2+til 9
,6
你甚至可以提供一个随机抽取的通用列表:
q)3?(`abc;2 3f;10;20;30;"text")
2 3f
`abc
"text"
https://stackoverflow.com/questions/54846987
复制相似问题