使用串联生成随机字符串

时间:2015-11-15 19:33:00

标签: sas

我想生成一个长度为10的随机字符串,但我不明白为什么我的代码不起作用:

word

当我逐行运行此代码时,我发现问题出在这里:

data b;
s=byte(0);
        do j=1 to 10;
            z=byte(97+floor(26*ranuni(0)));
            s=cat(s,z);
        end;
run;

它不会改变变量s。为什么这样以及如何解决它?

2 个答案:

答案 0 :(得分:1)

很可能是因为您创建的变量只有一个字符长。 SAS将在第一次看到变量时定义变量。就你的情况而言。

s=byte(0);

由于编译器知道BYTE()函数返回长度为1的字符串,因此将S定义为长度为1的字符变量。另外,为什么要在字符变量中存储二进制零?

您需要使用CATS()功能,而不是CAT()功能。否则S将永远不会改变,因为没有空间在其末尾添加任何更多的字符。

尝试这样的事情:

data b;
  length s $10 ;
  do j=1 to 10;
    z=byte(97+floor(26*ranuni(0)));
    s=cats(s,z);
  end;
run;

答案 1 :(得分:1)

汤姆的提议修复似乎对我有用 - 我最终以<body> a <p> b </p> <!-- inserted --> <p> c </p> <!-- inserted --> </body> 为空。以下备选方案的行为符合预期:

s