Native Vim随机数脚本

q33*_*r49 12 random vim

我知道有各种方法来获取随机数,例如,来自shell.但是,我在一部很少编译的Android手机上运行vim.而且,它不必是严格随机的.问题是,什么是有趣的,或简洁,或快(即与VIM原生功能),或短的方式来获得相当不错的随机数在Vim的序列?

ZyX*_*ZyX 16

尝试类似的东西

function Rand()
    return str2nr(matchstr(reltimestr(reltime()), '\v\.@<=\d+')[1:])
endfunction
Run Code Online (Sandbox Code Playgroud)

.我知道没有更好的选择,然后使用一些时间函数(有两个:reltime() 和localtime(),但后者只是每秒更新).我宁愿避免随机数或使用pyeval('random.randint(1, 10)')(前面加python import random),因为shell很慢,我不相信基于时间的解决方案.

注意:文档说返回的项目的格式reltime()取决于系统,因此我正在使用reltimestr(),而不是做一些reltime()[1]看起来像是否包含纳秒的东西.

  • @Remonn有`system()`函数. (2认同)

glt*_*lts 8

我最近自己玩过Vim脚本中的随机数字.以下是我在此过程中发现的一些资源.

没有Vim脚本

无论如何,如果可以,请使用外部随机数生成器.通常,它们比在Vim脚本中可以完成的任何事情更好,更快.

例如,试试

  • :python import random; print random.randrange(1, 7)
  • :echo system('echo $RANDOM')
  • 另一种脚本语言,例如Ruby

图书馆

Vim脚本库.这些希望努力提供体面质量的RNG实施.

讨论和片段

最后,一些链接到富有洞察力的讨论和Vim脚本片段.