delphi random_delphi产生随机数
//用delphi产生不重复的随机数
******************************************************************************************
var
aa : array[1..36] of string[2];
//aa数组为需要随机排列的数组,{先把1..36按顺序给aa数组赋值}
procedure TForm1.FormCreate(Sender:
TObject);
var
i:integer;
begin
for i:=1 to 36 do
begin
aa[i]:=inttostr(i);
bb[i]:=inttostr(i);
end;
end;
{随机进行排列}
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
swapa:string[2];
begin
randomize; //随机数初始化*一定要有,不然下次运行时候产生的随机数仍然和这次相同*
for i:=1 to 36 do
begin
j:=1+random(36);
swapa:=aa[i];
aa[i]:=aa[j];
aa[j]:=swapa;
end;
//由此得到不重复的随机排列数字
*****************************************************************************************
如何产生34-456之间的随机数
Randomize; 34+Random(456-34+1);
×××××××××××××××××××//下面是扫雷游戏的一个编法
procedure TForm1.Button1Click(Sender:TObject); begin Randomize; Memo1.Lines.Add(IntToStr(Random(20))); end;
××××××××××××
*****************************************************************************************
随机数相关的几个函数: 1、RandSeed;//随时机数发生的“种子”。如果不赋值那么每次执行产生的随机数列是一样的。 所以该值必须每次调用均应是不同值。 2、Randomize;//用当前机器时间作为“种子”初始化随机数发生器。 3、Random() ;//由“种子”初始化的随机数出发,开始产生随机数序列
但是Delphi中的Random()产生的是伪随机数,也就是说,程序的两次运行,Random()产生的随机数是一样的。
先运行一下Randomize,再Random就是真正的随机数了
即:
Randomize //初始化随机数发生器 Random()
*********************************************************************************************
delphi 如何产生不重复随机数
pascal里的随机数
随机数是指理论上没有规律可循、在指定范围内每个数的出现几率相等、无法根据之前的数来预测下一个数的数列。一般随机数生成器的基本原理是:首先初始化一个随机种子,其初始值可以是任意的整数;在每次获取随机数时,以随机种子为基础进行某种特殊的运算,获得一个随机数并返回之,然后再对随机种子进行某种运算,改变随机种子的值。这样,就可以生成许多比较随机的数,但同一个初始值的随机种子将会生成完全相同的随机数列。
Pascal的System单元提供了两个与随机数有关的子程序:Randomize和Random。
Randomize过程用于初始化随机种子,其初始值取决于当前的系统时钟。
Random函数用于获取随机数
它有两种调用形式:
Random,返回一个0到1之间(不包括1)的随机实数;
Random(N),返回0至N之间(不包括N)的随机整数,N为Word类型整数。
另外,System单元中随机种子变量的标识符为RandSeed,你也可以手动修改它。随机数在信息学奥林匹克中可用于随机化搜索、穷举等算法,以优化其性能,也可用于在快速排序中选择关键数,以使其快速排序算法的最坏情况没有固定的相应数列。如果你希望使用了随机数的程序对同一个输入数据能有恒定的输出结果,可以设置RandSeed为一个定值。
*************************************************************************************************
一个变态小算法
*******************************
比较耗费机时,如果产生的数目少,就不要用这个算法了。
计算的是在一个范围内(如1-1000),随机抽取n个不相等的随机数。我的思想就是先定义一个用来存放的数组(这当然是必须的啦,废话),然后定义了一个二维数组(感觉很浪费空间),这个二维数组是用来存放已经生成随机数的范围,当然不是随意存放了,要按照自然顺序,但这还不必要定义二维的。二维主要是存放一个范围,即某一列的第一行存放的是范围的小值,而第二行存放的是范围的大值。这样新生成的随机数肯定是在范围之外的,因为范围是已生成随机数的范围啊。这样,每次取随机数时,先随机抽取在某两个范围数组值之间,再在这两个范围数组值之间取随机数。基本上就是这样了。
public class random {
int
count=500; //个数
int
min=1; //最小值
int
max=1000; //最大值
int[] r=new
int[count]; //随机数存储数组
int[][] k=new
int[2][count+2]; //存储范围数组,用于判断范围值
//一维数组用来存放范围的小值,二维用来存放大值
int
l=0; //存储空间大小
public
random() //初始化范围
{k[0][0]=min-1; k[1][0]=min-1;
k[0][2]=max+1;
k[1][2]=max+1;
l=3;
}
public int
ran(){ //来一个可以制造随机整数的东西
return
(int)(Math.random()*1000000000);
}
public void p(int x,int
c) //用来比较存储数组
{ for(int
i=0;i
if(x
delphi random_delphi产生随机数相关推荐
- delphi中关于时间差的实例
很多时候要用到相差多少天,多少周,多少秒,查了一下资料,整理如下: 首先 uses dateutils; 先自己做了个实例,相关代码如下: 代码 uses dateutils; procedure ...
- Delphi 2007体验!
Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第 ...
- Delphi V7.0企业汉化版及注册码
Delphi V7.0 软件大小: 192998 KB 软件语言: 英文 软件类别: 国外软件 / 企业版 / 编程工具 应用平台: Win9x/NT/2000/XP Delphi 是一个类似微软公司 ...
- delphi 常用属性/方法《转》
名称 类型 说明 A Abort 函数 引起放弃的意外处理 Abs 函数 绝对值函数 AddExitProc 函数 将一过程添加到运行时库的结束过程表中 Addr 函数 返回指定对象的地址 ...
- 转:Delphi 函数大全
Delphi 函数大全 - xiucaiyao的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/xiucaiyao/article/details/4544039 ...
- delphi 中几种多线程操作方式
在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 主线程又程为UI线程. 进程和线程的主要差别在于它们是不同的操作系统资源管理方式.进程有独立的地址空 ...
- delphi中保留字的属性和含义
delphi中保留字的属性和含义 转发自https://www.cnblogs.com/cracksa/archive/2012/08/30/delphi-10-2.html 所谓保留字就是:在del ...
- Delphi多线程详解CreateThread、TThread,以及线程间通过临界区(CriticalSection)实现同步
在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:ht ...
- delphi 多线程3
多线程程序设计 我们知道,win95或winNT都是"多线程"的操作系统,在DELPHI 2.0中,我们可以充分利用这一特性,编写出"多线程"的应用程序. 对 ...
- delphi 讲的比较详细的多线程(推荐)
在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:ht ...
最新文章
- linux之父密码,Linux之父十大名言
- hdu 1002 A + B Problem II(大正整数相加)
- 昨天521表白失败,我想用Python分析一下...表白记录和聊天记录
- VS在win32平台与mysql链接_mysql5.5.28-win32 + qt--4.8.2-vs2008 数据库驱动编译与连接...
- Xcode 9.0 新增功能大全
- 学习C++/C的宏与for循环的结合
- 优酷视频如何修改账号密码?
- 服务器中anaconda如何修改环境变量,手动添加anaconda3到环境变量中的方法
- dell屏幕亮度调节不了_?戴尔XPS13 7390笔电测评:10代酷睿加持,屏幕/散热/续航升级...
- VUE axios发送cookie
- killall命令_没想到Linux命令也有“吓人”的一面……
- 从零开始研发GPS接收机连载——3、用HackRF软件无线电平台作为GPS模拟器
- php redis 菜鸟,安装redis和phpredis模块
- 系统分析与设计-敏捷迭代方法课后习题答案+学习笔记(答案见最后)
- 8类网线利弊_超6类7类8类网线进来挨打 6类线全面测评 网速和传输速率测试
- Win10电脑卡顿原因和解决方法
- 【深度】“考上北大,我们也和那几亿的农民工人互为镜像”
- 亲自面试汇丰银行面试题目总结
- Python批量导入图片到Word文件
- 计算机boot快捷键,求各种电脑进入boot 的方式,一般的电脑快捷键是什么?