我想生成一个长度为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。为什么这样以及如何解决它?
答案 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