j - 在 J lang 中使用不那么简单的随机生成
问题描述
我正在尝试使用 J 进行随机生成,并且会出现几个问题:
- 如果我想随机选择 10 个字符的单词,我可以使用
(?10 # 26) { 'abcdefghijklmnopqrstuvwxyz'
vqdffhrvso
选择其中 N 个的最佳方法是什么?例如,三个 10 个字符的单词?
深入示例 1. 非重复拣选怎么样?以上是重复挑选。
我可以选择如下的 4 位数字
(?5 # 10) { '0123456789'
40400
(a) 如何潜行一个 0 不能是第一位数字的条件?(b) 怎么说,例如我想从 <1234,1250> UNION (9999, 10002> 中选择自然数?(c) 如何在同一个集合中选择实数?
扩展点3。知道概率权重分别为0.1、0.3、0.5、0.1,如何从1、3、6、10中随机选择?
如何为任何分配选择号码?
提前感谢您的反馈!
解决方案
选择其中 N 个的最佳方法是什么?
这里有两种方法:
]alfa =: a. {~ (a.i.'a')+i.26
abcdefghijklmnopqrstuvwxyz
rand =: alfa {~ ] ?@$ #@alfa
rand 10
kuipaajyvm
rand 3 10 NB. generate a 2d array of indices into alfa (rand called 1x)
zlqtjfcurj
odzdfcuqiy
mjmrylxpau
rand&10"0 i.3 NB. generate three lists of indices (rand called 3x)
akfklfxuit
scqehljoah
pcptwgqdmm
不重复采摘怎么办?
双子座?提供不重复。您在上面使用的是?
针对参数列表的单子。
sel =: alfa {~ (#alfa) ?~ ]
sel&10"0 i.5
ysxagmekid
wbdqzkanum
wynmjuvcti
arhwqpegou
ofjigrctdn
sel 30 NB. impossible
|domain error: sel
| sel 30
如何潜入一个 0 不能是第一位数字的条件?
- 与其余数字分开生成第一个数字
- 不断生成答案,直到满足条件
NB. option 1
number =: 10 #. (>:@? bind 9) , (10 ?@$~ <:)
number 3
212
+/ 99 < (number bind 3)"0 i.1e4
10000
NB. option 2
number =: 10 #. 10 ?@$~ ]
number 3
831
+/ 99 < (number bind 3)"0 i.1e4 NB. some results with leading 0
8988
NB. fold single, an infinite loop with a break
goodnumber =: {{ (10^y-1)&{{y[1 Z: x <: y}} F. (number bind y) '' }}
goodnumber 3
912
+/99 < (goodnumber bind 3)"0 i.1e4 NB. no bad results
10000
概率权重
https://code.jsoftware.com/wiki/Fifty_Shades_of_J/Chapter_14
为任何分配选择一个数字
看着load 'stats/base/random'
推荐阅读
- ios - iOS 13 UISearchBar 外观和行为
- python - 在 python 中将 URL 参数传递给 webapp2.RequestHandler 会导致“无”
- powerbi - PowerBI 启用折叠
- angular - 如何修复在 Angular 中打开新选项卡时出现 404 Not Found 错误
- c++ - 如何从参数包构造 std::tuple 引用?
- ios - 无法在 Alert() 上单击确定
- postgresql - 在 postgres 中使用连接运算符更新 jsonb 字段
- java - Spring AMQP - Jackson2JsonMessageConverter 设置 _TypeId_ 自 2.1 版以来使用接口而不是具体类型
- visual-studio-code - 如何显示 VSCode 中安装的所有非主题扩展?
- c - 无法找出为什么我的程序没有做它应该做的事情