大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  Pascal语言>>Pascal入门>>PascalFAQ之基本技巧         本站全文搜索: 友情提示:

PascalFAQ之基本技巧
http://www.mydrs.org  1/1/2003  大榕树


如何获取随机数?

随机数是指理论上没有规律可循、在指定范围内每个数的出现几率相等、无法根据之前的数来预测下一个数的数列。一般随机数生成器的基本原理是:首先初始化一个随机种子,其初始值可以是任意的整数;在每次获取随机数时,以随机种子为基础进行某种特殊的运算,获得一个随机数并返回之,然后再对随机种子进行某种运算,改变随机种子的值。这样,就可以生成许多比较随机的数,但同一个初始值的随机种子将会生成完全相同的随机数列。

Pascal的System单元提供了两个与随机数有关的子程序:Randomize和Random。Randomize过程用于初始化随机种子,其初始值取决于当前的系统时钟。Random函数用于获取随机数,它有两种调用形式:Random,返回一个0到1之间(不包括1)的随机实数;Random(N),返回0至N之间(不包括N)的随机整数,N为Word类型整数。另外,System单元中随机种子变量的标识符为RandSeed,你也可以手动修改它。

随机数在信息学奥林匹克中可用于随机化搜索、穷举等算法,以优化其性能,也可用于在快速排序中选择关键数,以使其快速排序算法的最坏情况没有固定的相应数列。如果你希望使用了随机数的程序对同一个输入数据能有恒定的输出结果,可以设置RandSeed为一个定值。

如何使用FillChar?

System单元的FillChar过程用来把指定内存段中的所有字节赋为相同的值,它通常用来清空数据。FillChar的格式是FillChar(var X; Count: Word; Value),X是指定的内存段,如数组变量,Count是内存段的大小,即字节数,Value是填充的值,可以是Byte、Char或Boolean等单字节类型的值。如果你要把元素类型为Shortint、Integer或Longint的数组清空为0,可以把Value设为0,如果要全部元素赋为-1,可以把Value设为255。下面是一个简单的样例:

var
  P: array[0..999] of Longint;

begin
  FillChar(P, SizeOf(P), 255);
  Writeln(P[999]);
end.

如何使用Move?

System单元的Move过程用来把指定内存段的数据整块复制到另一内存段中,它通常用来成批移动数组元素。Move的格式是Move(var Source, Dest; Count: Word),Source是数据源,Dest是目标内存段,Count是复制的字节数。你不必担心源内存段会和目标内存段重叠或者重合,在这种情况下Move仍然能够正确工作,参考下面的样例:

var
  I: Integer;
  P: array[0..9] of Longint;

begin
  for I := 0 to 9 do P[I] := I;
  Move(P[4], P[2], 4 * 6);
  for I := 0 to 9 do Writeln(P[I]: 4);
end.

作 者:陈世熹
共有10328位读者阅读过此文

  • 上篇文章PascalFAQ之数据类型
  • 下篇文章PascalFAQ之特殊技术

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8307]
    2. 七类高中生具有保送资格 [5911]
    3. NOI2006获奖选手名单 [4956]
    4. 关于举办NOIP2006模拟赛的通告 [4107]
    5. Turbo Pascal各语句运行速... [3595]
    6. Turbo王者归来新Delphi免费... [3182]
    7. IOI2006我国4名选手全部获得金... [2946]
    8. 关于APIO2007与IOI2007... [2764]
    9. noip倒计时 by 枯叶蝴蝶 [2684]
    10. 朱泽园:思想上的金牌更重要 [2169]
    PascalFAQ之特殊技术
    PascalFAQ之基本技巧
    PascalFAQ之数据类型
    PascalFAQ之语法专题
    PascalFAQ之输入输出
    PascalFAQ之内存分配
    PascalFAQ编译指示专题
    PascalFAQ编译模式专题
    PascalFAQ编程工具专题
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号