我正在尝试编写一个后记文档,它将输出 5 个随机字符的字符串。 我可以制作一个由 26 个大写字母 A-Z 组成的数组 但我无法弄清楚如何将五个随机索引连接到一个字符串。 我什至不知道如何通过索引来寻址数组。我读了绿色、蓝色的书,试图找到这个模糊的要求,我的头很痛。
用简单的英语来说:
例如。 数组=“A,B,C,...X,Y,Z” rand_idx = int rand mod 26 输出字符串 = char(rand_idx)+char(rand_idx)+char(rand_idx)+char(rand_idx)+char(rand_idx)...重复
输出 = SVDRT KHSTE NCSDE SSGYP DISVT
尝试使用 -RAND- 生成随机数时,我的代码失败
代码
/inch {72 mul} def 1 inch 10 inch moveto
/Times-Roman findfont 15 scalefont setfont
% ADDED THE DEF AT THE END, AS PER JASONHARPER CORRECTION. THX JH
/letterArray [(A) (B) (C) (D) (E) (F) (G) (H) (I) (J)] def
/rrr {rand 26 mod} def
rrr cvs show %%%%%% THIS FAILS. PS MAKES ME FEEL STUPID.
letterArray 5 get show
letterArray 15 get show
( ) show
letterArray 12 get show
letterArray 8 get show
( ) show
showpage```
要在 PostScript 中创建随机 5 个字符的字符串,您需要利用一些 PostScript 技巧来处理数组、随机索引和串联。让我们将其分解为多个步骤,以阐明该过程的每个部分。
/inch {72 mul} def % Define inch conversion for positioning
1 inch 10 inch moveto % Move to starting position on page
/Times-Roman findfont 15 scalefont setfont
% Define the array of uppercase letters
/letterArray [(A) (B) (C) (D) (E) (F) (G) (H) (I) (J) (K) (L) (M) (N) (O) (P) (Q) (R) (S) (T) (U) (V) (W) (X) (Y) (Z)] def
% Function to generate a random index within 0-25
/randIdx { rand 26 mod } def
% Function to generate a random 5-character string
/genRandomString {
% Initialize an empty string
( ) dup
5 { % Repeat 5 times
randIdx % Get a random index
letterArray exch get % Use it to fetch a letter from letterArray
exch % Bring the string to the top of the stack
3 -1 roll % Roll the stack to concatenate
strcat % Concatenate the letter to the string
} repeat
} def
% Use genRandomString to display multiple random 5-character strings
5 {
genRandomString show % Show the random string
( ) show % Add a space between strings
} repeat
showpage % End the page
代码说明数组定义:
letterArray
是从
A
到
Z
的单字符字符串数组。
随机索引生成:
/randIdx { rand 26 mod } def
定义一个生成 0 到 25 之间随机索引的函数。
随机字符串生成:
/genRandomString
初始化一个空字符串(
( ) dup
),然后使用循环添加五个随机字母。
randIdx
生成随机索引。
letterArray exch get
在随机索引处检索来自
letterArray
的字母。
strcat
运算符将每个随机字母连接到不断增长的字符串。
显示多个字符串:
5 { genRandomString show ( ) show } repeat
生成并显示五个随机的 5 个字符的字符串,每个字符串后跟一个空格。
末页:
showpage
最终确定页面上的输出。
strcat
运算符来连接字符串。并非所有 PostScript 解释器都支持它,因此请检查与您的解释器的兼容性。
{ genRandomString show ( ) show } repeat
中的数字。