Q语言重启后生成不同随机数的内置方案咨询及deal失效疑问
Q语言重启后生成不同随机数的解决方案
一、便捷的内置方案
Q语言自带用系统时间初始化随机种子的方法,完全不用复杂逻辑:
- 启动Q时直接执行命令:
\s "j" - 或者在运行中的Q环境里执行:
system "s j"
这里的j代表用当前系统的毫秒级时间作为随机种子,每次重启Q时时间都不一样,自然能让1?6这类roll操作生成不同的随机数。
你也可以用纳秒级时间戳手动设置种子,效果一样:
\s .z.p
二、-1?6重启后仍相同的原因
-1?n是deal操作,它的作用是生成无重复的随机排列,但它依然受当前随机种子控制。默认情况下Q启动时的随机种子是固定值(一般是0),所以只要没改种子,不管用roll还是deal,每次重启后的结果序列都是固定的。只有先设置了动态种子(比如上面提到的系统时间),-1?6才会在每次重启时输出不同结果。
内容的提问来源于stack exchange,提问作者Sophia Hass
相关产品推荐
相关产品推荐

