在PostScript中以间隔生成随机数

flomei

我正在努力寻找一种在PostScript中给定间隔内生成随机数的方法。

基本上,PostScript具有三个功能来帮助您生成(伪)随机数。这些都是randsrandrrand

后两个用于将种子传递给数字生成器,以便能够再现特定结果。至少那是我所理解的。无论如何,它们似乎不适合我的情况。

因此,这rand似乎是我可以用来生成随机数的唯一函数,但是...

rand 返回0到2 31 − 1 范围内的随机整数
(摘自 第637页 的PostScript语言参考 (PDF中的651))

这远远超出了我正在寻找的间隔。我更感兴趣的是小到数千的值,也许是10.000或类似的东西,以及小到float的值(最多100),且所有下限均为0。

我以为我可以通过简单的除法和提取根来缩小我的数字,但这在很多情况下往往会给我带来无法使用的小值。我想知道是否有健壮的方法将大量数字缩小到我需要的数量,或者,我宁愿仅在所需的时间间隔内生成数字。

此外:在PostScript中不可能使用while循环,否则我将编写一个函数来生成数字,直到它们适合我的时间间隔为止。

关于将数字分解到我的区间中寻找什么的任何提示?

擦干

mod通常足够好而且速度很快。但是,通过使用浮点运算,您可能会获得更统一的分布。

rand 16#7fffffff div 100 mul cvi

这是因为mod丢弃输入的高位。PRNG通常会尝试对所有位进行随机化。通过按比例缩小然后按比例放大,它们都会以四舍五入的方式发挥作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章