关于random的问题,回答上来的加50分 (50分)

  • 主题发起人 主题发起人 Alphazw
  • 开始时间 开始时间
A

Alphazw

Unregistered / Unconfirmed
GUEST, unregistred user!
下面的这段程序是我从一个VB的源程序中转换过来的,可是由于Delphi对数据类型的控制
导致运行不能通过,现在想请教一下各位谁能够让下面的程序正常运行而不改变它在VB中
的运行结果。
我的电子邮件地址是:alpha@kzinfo.net.欢迎来信与本人讨论Delphi的编程问题,不过电
子邮件要到每个星期六才能回复。
先在此谢谢各位了!
var
word:string;
pass:string;
I:integer;
begin
ramdomize;
word:='abcdefghijklmnopqrstuvwxyz';
pass:='';
for i:=0 to 8 do begin
pass:=pass+copy(word,length(word)*random+1,1);
end;
end;
其实就是一个产生随机密码的程序,请各位帮个忙,谢谢了!
 
VB下的结果是什么?
 
作了些语法变化就好了
var
word:string;
pass:string;
I:integer;
begin
Randomize;
word:='abcdefghijklmnopqrstuvwxyz';
pass:='';
for i:=0 to 8 do
pass:=pass+copy(word,trunc(length(word)*random+1),1);

edit1.text:=pass;
end;
 
好像取出的是9位
如果取8位
i:=0 to 7
 
pass:=pass+copy(word,random(length(word)),1);
 
VB下面的结果是产生一个指定位数的随机密码,字符从word中随机取,在那段程序中产生的
密码的位数就是8位
Visual Basic Code:
word="abcdefghijklmnopqrstuvwxyz"
pass=""
for i:=0 to 8
pass=pass+mid(word,len(word)*rnd+1,1)
next i
 
pengxiaolin说的那样好像不行吧?因为那样产生的随机数是在0和Word长度之间的整数
 
copy(word,random(26)+1,1)
 
像YB_unique等人所说的那种在random()中加入参数的方法我早就试过了,不行的,那样只
能产生一串相同的字符串。各位能不能另外想一想办法?
 
我写的程序
pass:=pass+copy(word,trunc(length(word)*random+1),1);
没问题,我测试过了
 
i:=0 to 7取出的是8位,要小心[:)]
 
pengxiaolin所说的方法已经通过了,可以产生随机密码。感谢pengxiaolin和各位的回答。
另外我想问一下Brave,trunc起到什么作用?
 
取整函数,把小数位截掉,否则语法都不通过
 
接受了答案,感谢各位参于讨论,谢谢,请留下你们的电子邮箱好吗?
 
后退
顶部