如何在Free Pascal中创建随机字符串?

mca*_*dre 0 string random freepascal dynamic

我想编写一个函数GenString,它[0 .. 100]根据GenChar用户可以自定义的参数化函数返回一个随机字符串长度.

也就是说,如果一个用户想要生成所有as 的字符串,他可以通过传入一个总是返回的函数来做到这一点a,而另一个用户可以通过传入一个GenChar返回随机希伯来字母的自定义函数来生成随机字母希伯来语单词.

引理1:我想编写一个函数GenArray,生成一个传入函数GenThing : sometype返回的任何类型的数组.这可以在Free Pascal中完成.

引理2:我要做的是将QuickCheck移植到Free Pascal.

Jay*_*Jay 7

这是一个例子.由于提到了国际字符,因此使用Unicode字符串.

//The functions

type
  TGenChar = function: widechar;

function GenString(MaxLength: integer; GenChar: TGenChar): widestring;
var
  i: integer;
begin
  if MaxLength < 1 then
    MaxLength:= 1; //minimum length is 1
  setlength(result, random(MaxLength+1));
  for i:= 1 to length(result) do
    result[i]:= GenChar;
end;


//The usage example (remember to call randomize somewhere in your program)

var
  SampleCharSet: widestring= 'ABCxyz';

function SampleGenChar: widechar;
begin
  result:= SampleCharSet[random(length(SampleCharSet))+1];
end;

function GetRandomStringSample: widestring;
begin
  result:= GenString(100, SampleGenChar);
end;
Run Code Online (Sandbox Code Playgroud)