Random用法 pascal

合集下载

PASCAL中常用的函数和过程

PASCAL中常用的函数和过程
4、四舍五入函数 round(x) 定义:function Round(X: Real): Longint; 注意:X 是实型表达式. Round 返回 Longint 型的 X 的四舍五入值.如果返回值 超出了 Longint 的表示范围,则出错. 例子: begin Writeln(1.4, ' rounds to ', Round(1.4)); { 1 } Writeln(1.5, ' rounds to ', Round(1.5)); { 2 } Writeln(-1.4, 'rounds to ', Round(-1.4));{ -1 }
随机数在信息学奥林匹克中可用于随机化搜索、穷举等算法,以优化其性能, 也可用于在快速排序中选择关键数,以使其快速排序算法的最坏情况没有固定的 相应数列。
另外,System 单元中随机种子变量的标识符为 RandSeed,你也可以手动修 改它。如果你希望使用了随机数的程序对同一个输入数据能有恒定的输出结果, 可以设置 RandSeed 为一个定值。
附: 如何获取随机数?
随机数是指理论上没有规律可循、在指定范围内每个数的出现几率相等、无 法根据之前的数来预测下一个数的数列。一般随机数生成器的基本原理是:首先 初始化一个随机种子,其初始值可以是任意的整数;在每次获取随机数时,以随 机种子为基础进行某种特殊的运算,获得一个随机数并返回之,然后再对随机种 子进行某种运算,改变随机种子的值。这样,就可以生成许多比较随机的数,但 同一个初始值的随机种子将会生成完全相同的随机数列。
Writeln(-1.5, 'rounds to ', Round(-1.5));{ -2 } end.
5、取小数函数 frac(x) 定义:function Frac(X: Real): Real; 注意:X 是实型表达式. 结果返回 X 的小数部分; 也就是说, Frac(X) = X - Int(_X). 例子: var R: Real; begin R := Frac(123.456); { 0.456 } R := Frac(-123.456); { -0.456 } end.

random函数

random函数
也可以随机的载入一个movieclip,如果你的movieclip的命名是"bob1", "bob2"
一直到"bob5",我们可以这样写。
i = Math.ceil(Math.random()*5);
attachMovie("bob"+i, "fred"+i, 1);
运行这个代码以后。就会随机的载入一个movieclip,例如"bob3",放在level 1
random用法:random(x); //注释:x是个正整数
即可随机产生0~x之间的一切整数。而且它是一个函数,不能单独使用。
如a:=random(100);就是随机产生1个0~100之间的数赋给变量a;
但是如果只用random的话不太好。
因为random函数是随机一个数,然后你再次random的时候还是产生那个数。
end;
writeln;
end;
end.
这两组数据输出的是一样的结果,如果在程序前加上RANDOMIZE(即把大括号去掉)再运行程序,输出数据就不一样了.
RANDOM产生的是伪随机数或者说是用一种复杂的方法计算得到的序列值,因此每次运算时需要一个不同的种子值。种子值不同,得到的序列值也不同。因此也就是真正的随机数了。这也正是RANDOMIZE随机初始化的作用。VB里用NEW RANDOM()来表示初始化。
begin
a:=random(100);(random照常使用)
write(a,' ');
end;
end.
这个程序运行之后打出来的数就是10个不同的0~100之间的数了!所以一般在随机产生数的时候,都要加上randomize不然都是一样的数就不好了。

pascal 语言 第一课

pascal 语言 第一课
一个完整的pascal结构:
·看商品,猜价格
program caishu(input,output){程序头部,可以省略}
var{程序说明部分}
x,n,k:integer;
begin{主程序部分}
randomize;
x:=random(100);{随机产生一个价格}
n:=0;
repeat{猜价格的过程}
l:=2*pi*r;{计算周长}
s:=pi*r*r;{计算面积}
writeln(‘l=’, l, ‘s=’, s);{输出结果}
end.
2.分支语句
·if语句
功能:根据条件是否满足,可以分成两种走向
语法:if判断条件then第一分支语句
else第二分支语句;(如果没有else分支,分号将移到then分支后面)
·输出语句
功能:将变量当前值或常量输出到屏幕上
语法:write(输出表);
writeln(输出表);
解释:
(1)输入表中的常量或变量间用逗号分隔;例如write(‘x=’, x); write(1234);
(2)对于变量可以用场宽控制变量的输出格式;
例如write(x:5);
write(x:5:3);
支持的算术运算:+ – * /(四种运算的结果均为实型数)
支持的关系运算:> >= < <= <> =
不支持逻辑运算
表示方法:普通表示,例如5.0 3.4;科学计数法表示,–3e10
注意:整型数和实型数进行混合运算时,结果为实型
3.字符型char
不支持算术运算、逻辑运算
支持的关系运算:> >= < <= <> =

Pascal函数大全.

Pascal函数大全.

Pascal 函数大全1.数学函数2.标量函数3.转换函数4.杂类函数Pascal语言函数集(含Delphi控件属性) abort 函数引起放弃的意外处理abs 函数绝对值函数addexitproc 函数将一过程添加到运行时库的结束过程表中addr 函数返回指定对象的地址adjustlinebreaks函数将给定字符串的行分隔符调整为cr/lf序列align 属性使控件位于窗口某部分alignment 属性控件标签的文字位置allocmem 函数在堆栈上分配给定大小的块allowgrayed 属性允许一个灰度选择ansicomparestr 函数比较字符串(区分大小写)ansicomparetext 函数比较字符串(不区分大小写)ansilowercase 函数将字符转换为小写ansiuppercase 函数将字符转换为大写append 函数以附加的方式打开已有的文件arctan 函数余切函数assignfile 函数给文件变量赋一外部文件名assigned 函数测试函数或过程变量是否为空autosize 属性自动控制标签的大小backgrounddi2001.jpg 属性背景色beginthread 函数以适当的方式建立用于内存管理的线程bevelinner 属性控件方框的内框方式bevelouter 属性控件方框的外框方式bevelwidth 属性控件方框的外框宽度blockread 函数读一个或多个记录到变量中blockwrite 函数从变量中写一个或多个记录borderstyle 属性边界类型borderwidth 属性边界宽度break 命令终止for、while、repeat循环语句brush 属性画刷caption 属性标签文字的内容changefileext 函数改变文件的后缀chdir 函数改变当前目录checked 属性确定复选框选中状态chr 函数返回指定序数的字符closefile 命令关闭打开的文件color 属性标签的颜色columns 属性显示的列数comparestr 函数比较字符串(区分大小写)concat 函数合并字符串continue 命令继续for、while、repeat的下一个循环copy 函数返回一字符串的子串cos 函数余弦函数ctl3d 属性是否具有3d效果cursor 属性鼠标指针移入后的形状date 函数返回当前的日期datetimetofiledate函数将delphi的日期格式转换为dos的日期格式datetimetostr 函数将日期时间格式转换为字符串datetimetostring 函数将日期时间格式转换为字符串datetostr 函数将日期格式转换为字符串dayofweek 函数返回星期的数值dec 函数递减变量值decodedate 函数将日期格式分解为年月日decodetime 函数将时间格式分解为时、分、秒、毫秒delete 函数从字符串中删除子串deletefile 命令删除文件diskfree 函数返回剩余磁盘空间的大小disksize 函数返回指定磁盘的容量dispose 函数释放动态变量所占的空间disposestr 函数释放字符串在堆栈中的内存空间ditherbackgrounddi2001.jpg?使背景色的色彩加重或减少50%dragcursor 属性当鼠标按下时光标的形状dragmode 属性按动的作用方式dropdowncount 属性容许的显示数据项的数目editmask 属性编辑模式enabled 属性是否使标签呈现打开状态encodedate 函数将年月日合成为日期格式encodetime 函数将时、分、秒、毫秒合成为时间格式endmargin 属性末尾边缘eof 函数对有类型或无类型文件测试是否到文件尾eoln 函数返回文本文件的行结束状态erase 命令删除外部文件exceptaddr 函数返回引起当前意外的地址exclude 函数从集合中删除一些元素exceptobject 函数返回当前意外的索引exit 命令立即从当前的语句块中退出exp 函数指数函数expandfilename 函数返回包含绝对路径的字符串extendedselect 属性是否允许存在选择模式,true时,multiselect才有意义extractfiledir 函数返回驱动器和路径extractfileext 函数返回文件的后缀extractfilename 函数返回文件名extractfilepath 函数返回指定文件的路径fileage 函数返回文件已存在的时间fileclose 命令关闭指定的文件filecreate 命令用指定的文件名建立新文件filedatetodatetime 函数nbsp;将dos的日期格式转换为delphi的日期格式fileexists 函数检查文件是否存在filegatattr 函数返回文件的属性filegetdate 函数返回文件的dos日期时间标记fileopen 命令用指定的存取模式打开指定的文件filepos 函数返回文件的当前指针位置fileread 命令从指定的文件读取filesearch 命令在目录中搜索指定的文件fileseek 函数改变文件的指针filesetattr 函数设置文件属性filesetdate 函数设置文件的dos日期时间标记filesize 函数返回当前文件的大小filewrite 函数对指定的文件做写操作fillchar 函数用指定的值填充连续字节的数findclose 命令终止findfirst/findnext序列findfirst 命令对指定的文件名及属性搜索目录findnext 命令返回与文件名及属性匹配的下一入口floattodecimal 函数将浮点数转换为十进制数floattostrf 函数将浮点数转换为字符串floattostr 函数将浮点数转换为字符串floattotext 函数将给定的浮点数转换为十进制数floattotextfmt 函数将给定的浮点数转换为十进制数flush 函数将缓冲区的内容刷新到输出的文本文件中fmtloadstr 函数从程序的资源字符串表中装载字符串fmtstr 函数格式化一系列的参数,其结果以参数result 返回 font 属性设置字体format 函数格式化一系列的参数并返回pascal字符串formatbuf 函数格式化一系列的参数formatdatetime函数用指定的格式来格式化日期和时间formatfloat 函数指定浮点数格式frac 函数返回参数的小数部分freemem 函数按给定大小释放动态变量所占的空间getdir 返回指定驱动器的当前目录getheapstatus 返回内存管理器的当前状态getmem 建立一指定大小的动态变量,并将指针指向该处getmemorymanager 返回内存管理器的入口点glyph 函数按钮上的图象halt 停止程序的执行并返回到操作系统hi 返回参数的高地址位high 返回参数的上限值hint 属性提示信息int 返回参数的整数部分include 添加元素到集合中insert 在字符串中插入子串inttohex 将整型数转换为十六进制数inttostr 将整型数转换为字符串ioresult 返回最新的i/o操作完成状态isvalidident 测试字符串是否为有效的标识符items 属性默认显示的节点kind 属性摆放样式largechange 属性最大改变值layout 属性图象布局length 函数返回字符串的动态长度lines 属性缺省显示内容ln 函数自然对数函数lo 函数返回参数的低地址位loadstr 函数从应用程序的可执行文件中装载字符资源lowercase 函数将给定的字符串变为小写low 函数返回参数的下限值max 属性最大值maxlength 属性最大长度min 属性最小值mkdir 命令建立一子目录move 函数从源到目标复制字节multiselect 属性允许同时选择几个数据项name 属性控件的名字new 函数建立新的动态变量并设置一指针变量指向它newstr 函数在堆栈上分配新的字符串now 函数返回当前的日期和时间odd 测试参数是否为奇数onactivate 事件焦点移到窗体上时触发onclick 事件单击窗体空白区域触发ondblclick 事件双击窗体空白区域触发onclosequery 事件使用者试图关闭窗体触发onclose 事件窗体关闭后才触发oncreate 事件窗体第一次创建时触发ondeactivate 事件用户切换到另一应用程序触发ondragdrop 事件鼠标拖放操作结束时触发ondragover 事件有其他控件从他上面移过触发onmousedown 事件按下鼠标键时触发onmouseup 事件释放鼠标键时触发onmousemove 事件移动鼠标时触发onhide 事件隐藏窗体时触发onkeydown 事件按下键盘某键时触发onkeypress 事件按下键盘上的单个字符键时触发onkeyup 事件释放键盘上的某键时触发onpaint 事件窗体上有新部分暴露出来触发onresize 事件重新调整窗体大小触发onshow 事件在窗体实际显示之前瞬间触发ord 返回序数类的序数outlinestyle 属性类型outofmemoryerror 引起outofmemory 意外pageindex 属性页索引pages 属性页paramcount 函数返回在命令行上传递给程序的参数数量paramstr 函数返回指定的命令行参数pen 属性画刷设置pi 函数返回圆周率pipicture 属性显示图象pictureclosed 属性设置closed位图pictureleaf 属性设置leaf位图pictureminus 属性设置minus位图pictureopen 属性设置open位图pictureplus 属性设置plus位图pos 函数在字符串中搜索子串pred 函数返回先前的参数random 函数返回一随机函数randomize 函数用一随机数初始化内置的随机数生成器read 函数对有格式的文件,读一文件组件到变量中;对文本文件,读一个或多个值到一个或多个变量中readln 函数执行read过程,然后跳到文件下一行readonly 属性只读属性reallocmem 函数分配一动态变量rename 函数重命名外部文件renamefile 函数对文件重命名reset 函数打开已有的文件rewrite 函数建立并打开一新的文件rmdir 函数删除空的子目录round 函数将实数值舍入为整型值runerror 函数停止程序的执行scrollbars 属性滚动条状态seek 函数将文件的当前指针移动到指定的组件上seekeof 函数返回文件的文件结束状态seekeoln 函数返回文件的行结束状态selectedcolor 属性选中颜色setmemorymanager 函数设置内存管理器的入口点settextbuf 函数给文本文件指定i/o缓冲区shape 属性显示的形状showexception 函数显示意外消息与地址sin 函数正弦函数sizeof 函数返回参数所占的字节数smallchange 属性最小改变值sorted 属性是否允许排序sqr 函数平方函数sqrt 函数平方根函数startmargin 属性开始边缘state 属性控件当前状态str 函数将数值转换为字符串stralloc 函数给以null结束的字符串分配最大长度-1的缓冲区strbufsize 函数返回存储在由stralloc分配的字符缓冲区的最大字符数strcat 函数将一字符串附加到另一字符串尾并返回合并的字符串strcomp 函数比较两个字符串strcopy 函数将一个字符串复制到另一个字符串中strdispose 函数释放堆栈上的字符串strecopy 函数将一字符串复制到另一个字符串并返回结果字符串尾部的指针strend 函数返回指向字符串尾部的指针stretch 属性自动适应控件的大小strfmt 函数格式化一系列的参数stricomp 函数比较两个字符串(不区分大小写)stringtowidechar 函数将ansi字符串转换为unicode字符串strlcat 函数将一字符串中的字符附加到另一字符串尾并返回合并的字符串strlcomp 函数以最大长度比较两个字符串strlcopy 函数将一个字符串中的字符复制到另一个字符串中strlen 函数返回字符串中的字符数strlfmt 函数格式化一系列的参数,其结果中包含有指向目标缓冲区的指针strlicomp 函数以最大长度比较两个字符串(不区分大小写)strlower 函数将字符串中的字符转换为小写strmove 函数将一个字符串中的字符复制到另一个字符串中strnew 函数在堆栈上分配一个字符串strpas 函数将以null结束的字符串转换为pascal类的字符串strpcopy 函数将pascal类的字符串复制为以null结束的字符串strplcopy 函数从pascal类的最大长度字符串复制为以null结束的字符串strpos 函数返回一个字符串在另一个字符串中首次出现指针strrscan 函数返回字符串中最后出现字符的指针strscan 函数返回字符串中出现首字符的指针strtodate 函数将字符串转换为日期格式strtodatetime 函数将字符串转换为日期/时间格式strtofloat 函数将给定的字符串转换为浮点数strtOInt 函数将字符串转换为整型strtOIntdef 函数将字符串转换为整型或默认值strtotime 函数将字符串转换为时间格式strupper 函数将字符串中的字符转换为大写style 属性类型选择suce 函数返回后继的参数swap 函数交换参数的高低地址位tabs 属性标记每一项的内容tabindex 属性标记索引text 属性显示的文本texttofloat 函数将字符串(以null结束的格式)转换为浮点数time 函数返回当前的时间timetostr 函数将时间格式转换为字符串trim 函数从给定的字符串中删除前导和尾部的空格及控制字符trimleft 函数从给定的字符串中删除首部的空格及控制字符trimright 函数从给定的字符串中删除尾部的空格及控制字符trunc 函数将实型值截取为整型值truncate 函数截去当前文件位置后的内容unselectedcolor 属性未选中颜色upcase将字符转换为大写uppercase 将给定的字符串变为大写val 函数将字符串转换为整型值vararraycreate 函数以给定的界限和维数建立变体数组vararraydimcount 函数返回给定变体的维数vararrayhighbound 函数返回给定变体数组维数的上界vararraylock 函数锁定给定的变体数组vararraylowbound 函数返回给定变体数组维数的下界vararrayof 函数返回指定变体的数组元素vararrayredim 函数通过改变上限来调整变体的大小vararrayunlock 函数解锁指定的变体数组varastype 函数将变体转换为指定的类型varcase 函数将变体转换为指定的类型并保存它varclear 函数清除指定的变体varcopy 函数将指定的变体复制为指定的变体varformdatetime 函数返回包含日期时间的变体varisarray 函数测试变体是否为数组varisempty 函数测试变体是否为unassignedvarisnull 函数测试变体是否为nullvartodatetime 函数将给定的变体转换为日期时间vartype 函数将变体转换为指定的类型并保存它visible 属性控件的可见性wantreturns 属性为true时,按回车键产生一个回车符;为false时,按下ctrl+enter才产生回车符write 命令对有格式的文件,写一变量到文件组件中;对文本文件,写一个或多个值到文件中writeln 命令执行write过程,然后输出一行结束标志widecharlentostring 函数将ansi字符串转换为unicode字符串widecharlentostrwar 函数将unicode字符串转换为ansi字符串变量widechartostring 函数将unicode字符串转换为ansi字符串widechartostrvar 函数将unicode字符串转换为ansi字符串变量自然对数:以e为底的对数,称自然对数!e 的一个定义是:如果级数1 + 1/1! + 1/2! + 1/3! + 1/4! + ... + 1/(n-1)! + ....是收敛的,我们就把他的和记做e ;e 这个符号是欧拉在1727年首先引进的。

random函数详解

random函数详解

#include <iostream>#include <time.h>using namespace std;#define MAX 100int main(int argc, char* argv[]){srand( (unsigned)time( NULL ) ); //srand()函数产生一个以当前时间开始的随机种子for (int i=0;i<10;i++)cout<<rand()%MAX<<endl; //MAX为最大值,其随机域为0~MAX-1 return 0;}rand()通常的使用方法是这样的:rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。

这样,如果你要产生0~10的10个整数,可以表达为:int N = rand() % 11;这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样:int N = 1 + rand() % 11;总结来说,可以表示为:a + rand() % n其中的a是起始值,n是整数的范围。

若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数,若要得到随机到百分位的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依此类推。

通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。

若要产生每次不同的随机数,可以使用srand( seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。

如大家所说,还可以包含time.h头文件,然后使用srand( time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒)。

random函数详解开始是介绍一下random()函数和Math.random()函数,然后介绍一些由此引出的自定义函数.对于如何实战出一些效果,那需要想象的翅膀和其它AS基础的支持.而算法本身并不困难.最后我会介绍一个简单效果.希望能启发读者的思维.1、random(number)函数介绍见帮助文档,简单再提一下,random(number)返回一个0~number-1之间的随机整数.参数number代表一个整数.示例:trace(random(5));//复制到主场景第一帧.2、Math.random()见帮助文档。

Pascal语法

Pascal语法
graphcolormode p 中分辨率彩色图形方式,320*200彩色
graphmode p 中分辨率黑白图形方式,320*200黑白
graphwindow(x1,y1,x2,y2,color)p 定义图形方式窗口
hires p 高分辨率单色图形方式,640*200黑白
hirescolor(color) p 高分辨率彩色图形方式,640*200彩色
highvideo p 选择高亮度显示字符
insline p 在当前光标位置插入空行
keypressed f 测定键盘输入状态
lowvideo p 低亮度显示字符
normvideo p 选择正常文本属性从光标所在位置开始显示字符
nosound p 关闭内部扬声器
readkey p 等待从键盘输入一个字符
其他单元
chain(f) p 目标程序链接
execute(f) p 执行目标程序
mark(p) p 标记动态变量
release(p) p 释放动态变量区
srtinit p 屏幕初始化
crtline p 汉字屏幕方式转换
graphbackground(color) p 选择背景色
EXP(X) F 以E为底的指数函数
FILEPOS(F) F 文件记录的当前位置
FILESIZE(F) F 文件记录数
FILLCHAR(D,LEN,DATE) P 填充数值或字符
OFS(X) F 侧变量偏移地址
ORD(CH) F 求一个字符的ASCII码值
PARAMCOUNT F DOS参数串长度
PARAMSTR(N) F DOS参数串
PI F 圆周率的值

PASCAL的基本语法

PASCAL的基本语法

说明部分
begin
readln(r);//输入半径
l:=2*pi*r;{计算周长} s:=pi*r*r;{计算面积}
程序体
writeln('l=',l:10:2);
执行部分
readln();
writeln('s=',s:10:2);
readln();
end.
PASCAL程序中的符号
1、基本符号 (1)26个英文字母(包括大小写); (2)10个数字符号(0~9); (3)其它特殊符号,如+、-、*、/、=、 <、>、[、]、{、}等。
PASCAL程序中的符号
(2)自定义 自定义标示符是用户按标示符定义的规
则自己定义的,用来给常量、变量、类型、 函数、过程和程序命名的。自定义标示符应 注意以下几点:不能与保留字同名;不能与 标准标示符同名;尽量遵循“见名知义”的 原则。
练习
判断下面的自定义标示符是否正确,错误 的请说明原因。
begin、start、3th、pi、∏、f&j、 name_of_school
数据的定义
数据是指计算机能够识别和处理的数、 字符及符号。
数据有三个要素:数据类型、数据范 围、能参与的运算。
在编译程序时必须说明每个数据的类 型,所执行的运算必须与数据类型一致, 否则编译时会给出错误信息。
整型
整型也叫整数类型,包括正整数、 负整数和零。整型数只能由正负号和 数字组成,不能出现其他字符。
(2)说明部分的专用定义符号 array、const、file、label、packed、var、record、set、
type、of (3)语句专用符号
case、do、downto、else、for、goto、if、repeat、 then、to、until、while、with、forward (4)预算符号

Random用法 pascal

Random用法 pascal

Random导论前言——为什么要写此导论在近几次的模拟赛中,笔者深感学艺不精,能力有限。

但是测试数据是有限的,人品的力量是无穷的(有可能是maxlongint,也有可能是maxlongint+1),在模拟赛最后的十几分钟怎甘心坐以待毙?朴素?再朴素这几分钟也写不好吧?就算写完了,能过的点也是极其有限的。

与其过那有限的一两个点,不如拼一下自己的RP。

随机生成一个答案去赌一下。

(类花哥者慎用!否则后果自负!!!)谨以此篇导论献给所有爆过0的OIer。

准备——积攒RP值关于RP的理论随着信息竞赛的发展已经日趋完善,就不必我在这里多费口舌。

详细资料百度一下,你就知道。

(推荐:《RP导论》)要谨记:为人要老实、做好事不要有太强的目的性、有义务性劳动主动参加、捡到东西要上交、在Dota中不要虐队友或电脑、一天感觉太顺是打开扫雷调成高级尝试连点99下不触雷……(额,看到有臭鸡蛋和烂菜叶飞过来了……)代码——random的基础笔者是学Pascal的,能力有限,只能提供Pascal的代码了。

用C/C++的朋友委屈了,网上自己查一下吧。

百度一下,你就知道。

首先,在主程序开头(或在调用的过程里)打上”randomize;”。

这个叫做“埋种子”,相当于系统的初始化,否则你怎么random都是一个数。

然后呢,“ans:=random(n)”,ans是你要的答案,random是pascal自带的随机数函数,n是一个参数,是random出来的数的上界(下界是0,包括两端点)。

注意n为整形数,random产生的也是整形数。

program ran(input,output);vari,j,n:Longint;beginrandomize;n:=10;for i:=1 to 10 dobeginj:=random(n);write(j,' ');end;end.大概就是这么个用法。

技巧——实战应用适合用random题目大家也许都猜得到,就是那些答案输出简单(一个整数、yes或no);下面看一道真题。

Pascal技术知识点随笔2

Pascal技术知识点随笔2

administration1、验证文件是否存在FileExists(const FileName : string)Boolean;[如果指定的文件(FileName 是全路经名)存在则return true else return false]2、该API函数您隐藏标题栏上的标题SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);[在Windows环境下窗体创建事件中,该API函数您隐藏标题栏上的标题]3、扑捉该消息可以拖动窗体本身来移动窗体WM_NCHITTEST 扑捉该消息可以拖动窗体本身来移动窗体。

方法是:begininherited;if msg.Result =1 then msg.Result := 2;end;WM_ACTIVATE 窗口被激活或被取消激活。

WM_CHAR 按下某个健,并且已经发送了WM_KEYDOWN和WM_KEYUP消息。

WM_CLOSE 窗口将要关闭。

WM_LBUTTONDOWN 按下鼠标左健。

WM_MOUSEMOVE 鼠标移动。

WM_PAINT 客户区需要重画。

WM_TIMER 发生了定时器事件。

WM_QUIT 程序将要退出。

4、连接文件编辑{$I D:\File1.txt}[上句的意识是把D盘上的名叫"File1"的文本文件中的pascal代码连入程序运行,delphi将该文件的内容编译后存入.res资源文件中]5、运行或打开文件、可执行程序或网页ShellExecute函数可运行或打开文件、可执行程序或网页⒈在程序代码的USE子句中加入字符串Shellapi;⒉在事件代码中加入下列代码:ShellExecute(handle, 'open', ' C:\ mydocument\abc.exe', ' ', ' ', SW_SHOWNORMAL);或shellExecute(handle, 'open', '/', ' ', ' ', SW_SHOWNORMAL);6、修改桌面背景:procedure TForm1.Button1Click(Sender: TObject);V AR reg : tregistry;bmp : tbitmap;jpeg : tjpegimage;begintryimage.Picture.SaveToFile('C:\WINNT\Web\Wallpaper\temp.bmp');reg := tregistry.Create;reg.RootKey := hkey_current_user;reg.OpenKey('control panel\desktop',false);reg.WriteString('tilewallpaper','0');reg.WriteString('wallpaper','C:\WINNT\Web\Wallpaper\temp.bmp');systemparametersinfo(spi_setdeskwallpaper,0,nil,spif_sendchange);reg.CloseKey;finallyreg.Free;end;end;7、广播消息:vars : string;beginS := 'sdfsdfsdf';SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(s));end;在该例子中HWND_BROADCAST表示向所有窗口发送消息。

明明的随机数pascal

明明的随机数pascal

1.明明的随机数
(random.pas/c/cpp)
【问题描述】
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。

然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。

请你协助明明完成“去重”与“排序”的工作。

【输入文件】
输入文件random.in 有2行,第1行为1个正整数,表示所生成的随机数的个数:
N
第2行有N个用空格隔开的正整数,为所产生的随机数。

【输出文件】
输出文件random.out 也是2行,第1行为1个正整数M,表示不相同的随机数的个数。

第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

【输入样例】
10
20 40 32 67 40 20 89 300 400 15
【输出样例】
8
15 20 32 40 67 89 300 400。

pascal测试题

pascal测试题

PASCAL测试题第1题明明的随机数(random.pas)【问题描述】明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。

然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。

请你协助明明完成“去重”与“排序”的工作。

【输入文件】输入文件random.in有2行,第1行为1个正整数,表示所生成的随机数的个数:N第2行有N个用空格隔开的正整数,为所产生的随机数。

【输出文件】输出文件random.out也是2行,第1行为1个正整数M,表示不相同的随机数的个数。

第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

【输入样例】102040326740208930040015【输出样例】8152032406789300400第2题陶陶摘苹果(apple.pas)【问题描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。

苹果成熟的时候,陶陶就会跑去摘苹果。

陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。

假设她碰到苹果,苹果就会掉下来。

【输入文件】输入文件apple.in包括两行数据。

第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。

第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

【输出文件】输出文件apple.out包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

【样例输入】100200150140129134167198200111110【样例输出】5第3题不高兴的津津(unhappy.pas)【问题描述】津津上初中了。

pythonrandom库的7种用法

pythonrandom库的7种用法

pythonrandom库的7种⽤法random的⽤法:1、random.random()⽤于⽣成0到1之间的浮点数2、random.uniform(a,b)⽤于⽣成⼀个指定范围内的随机浮点数,两个参数其中⼀个是上限,⼀个是下限,如果a>b,则⽣成的随机数n:b<=n<=a,如果a<b,则a<=n<=b3、random.randint(a,b)⽤于⽣成⼀个指定范围内的整数,其中a是下限,b是上限。

4、random.randrange([start],[stop],[step])从给定范围内每隔步长(step参数确定)内取值。

5、random.chioce(sequence)从序列种随机取⼀个元素(sequence可以是列表,可以是元组,可以是字符串,可以是字典)6、random.shuffle(x[,random])⽤于将列表中的元素随机排列7、random.sample(sequence,k)从指定列表中随机获得指定长度的⽚段并随机排列。

k实际上是指要在列表中取的长度,⽐如K=4,那么就在列表中随机取4个元素import random#导⼊随机数库a=random.random()#在0和1之间随机取浮点数print('①、在0和1之间随机取浮点数')print (a)#打印取到的值print('\n')import randomprint('②、在给定范围内取随机取浮点数')print(random.uniform(1,10))#在1到10之间随机去浮点数print(random.uniform(1,10))print('\n')import randomprint('③、在给定范围内随机取整数')print(random.randint(1,99))#在1到99之间随机取整数print('\n')import randomprint('④、在给定范围内随机取步长的随机整数')print(random.randrange(10,100,2))#在给定范围内每隔步长随机取值print('\n')import randomprint('⑤、在给定的列表、字典、字符串内随机取字符')lst=['python','c','c++','javascript']dict1={1:'a',2:'b',3:'c'}str1='i love python'print(random.choice(lst))#在列表的元素中随机取值print(random.choice(dict1))#在字典的元素中随机取值print(random.choice(str1))#在字符串中随机取值print('\n')import randomprint('⑥、将列表中的元素重新排列')p=['a','A','b','B','c','C','D','d']random.shuffle(p)print(p)print('\n')import randomprint('⑦、在列表中按照给定的⽚段长度随机取值,这个长度取决与K,此例中⽚段长度为4')lst=[1,2,3,4,5]print(random.sample(lst,4))#print(lst)。

pascal函数大全

pascal函数大全

pascal函数大全pascal函数编辑本段一、数学函数:Inc(i) 使i:=i+1; (在free pascal中,它是过程,不能再将值赋给变量,也不能写在语句中直接调用)dec(i) 使i:=i-1; (在free pascal中,它是过程,不能再将值赋给变量,也不能写在语句中直接调用)Abs(x) 求x的绝对值例:abs(-3)=3Chr(x) 求编号x对应的字符。

例:Chr(65)=’A’chr(97)=’a’chr(48)=’0’Ord(x) 求字符x对应的编号。

例:ord(‘A’)=65 ord(‘a’)=97 另外:ord(false)=0 ord(true)=1 Sqr(x) 求x的平方。

例:sqr(4)=16Sqrt(x)求x的开方. 例:sqrt(16)=4round(x) 求x的四舍五入例:round(4.5)=5 结果是integer型trunc(x) 求x的整数部分例:trunc(5.6)=5 结果是integer型int(x) 求x的整数部分例int(5.6)=5.0 结果是real型frac (x)求x的小数部分例frac(5.6)=0.6 (在free pascal中想看小数型式的结果,在输出时应指定场宽)pred(x) 求x的前导pred(‘b’)=’a’pred(5)=4 pred(true)=falsesucc(x) 求x的后继succ(‘b’)=’c’succ(5)=6 succ(false)=trueodd(x) 判断x是否为奇数。

如果是值为true,反之值为false. Odd(2)=false odd(5)=truepower(a,n) 求a的n次方power(2,3)=8 {只有在开启math库时才可以使用}random 取0~1之间的随机数(不能取到1)randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面.Fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0 {赋成布尔型变量也可以}SHR: x SHR n 把x换成二进制后向右移n位,相当于把x 除以2nSHL: x SHL n把x换成二进制后向左移n位,相当于把x 乘以2n编辑本段二、字符串函数1. 连接运算concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.例:concat(‘11’,’aa’)=’11aa’;2. 求子串。

random类使用方法

random类使用方法

random类使用方法
1、Random类
Random类是Java中的一个工具类,提供了一组产生随机数的方法,它可以帮助我们生成不同的随机数,例如整数、小数、布尔型等。

2、Random类的使用
(1) 实例化Random类
要使用Random类,首先要实例化一个Random对象,这样就可以调用该类中的方法来生成随机数:
Random r = new Random();
(2) 产生随机整数
Random类提供了两种方法来产生随机整数:
//产生一个大于等于0小于等于n-1的随机整数
int num = r.nextInt(n);
//产生一个任意的随机整数,int是32位
int num = r.nextInt();
(3) 产生随机小数
Random类提供了两种方法来产生随机小数:
//产生一个大于等于0小于等于1的随机小数
double num = r.nextDouble();
//产生一个任意的随机小数
double num = r.nextDouble();
(4) 产生随机布尔型
Random类提供了两种方法来产生随机布尔型:
//产生一个随机布尔型
boolean b = r.nextBoolean();
//产生一个任意的随机布尔型
boolean b = r.nextBoolean();
3、Random类的优点
Random类的使用可以帮助我们产生随机数,从而实现一些动态效果,使我们的程序更加灵活、精彩。

此外,随机数的产生可以提高程序的安全性,用来完成一些数据的加密。

random函数的用法

random函数的用法

random函数的用法
random函数的用法:
1、random.random:随机生成(0,1)之间的浮点数。

2、random.randint(上限,下限):随机生成在范围之内的整数,两个参数分别表示上限和下限。

3、random.randrange:在指定范围内,按指定基数递增的集合中获得一个随机数,有三个参数,前两个参数代表范围上限和下限,第三个参数是递增增量,不包括下限,包括上限。

使用方式如下:
random.randrange(0,11,2):随机产生范围为10间隔为2的数。

注:这里输出(0,2,4,6,8,10)中一个。

4、random.choice(list)从序列中随机抽选一个数。

5、random.shuffle(list)随机排序。

注:list元素为数值型。

random.seed(0)设置初始化随机数种。

random用法及短语

random用法及短语

random用法及短语"random" 是英语中的一个形容词,表示任意的、随机的、无规律的。

以下是 "random" 的常见用法和短语:1. 用作形容词:"He made a random choice." (他做了一个随机的选择。

)"There was no pattern in their random movements." (他们的随机移动没有规律。

)2. 用作副词:"She randomly chose a book from the shelf." (她从架子上随机选了一本书。

)"He stumbled randomly through the forest." (他随机地在森林中跌跌撞撞地走着。

)3. 常用短语:"at random" (随机地)"random selection" (随机选择)"random number" (随机数)"random access memory" (随机存取存储器,简称 RAM)4. 其他相关表达:"The computer generated a random password." (计算机生成了一个随机密码。

)"They were given a random assignment." (他们被随机分配了任务。

)"The team used a random sampling technique." (团队使用了随机抽样技术。

)5. 与其他词组合:"random event" (随机事件)"random sampling" (随机抽样)"random process" (随机过程)6. 在数学和统计学中:在数学和统计学中,"random" 通常与概率论和统计模型相关,表示某种事件或数据点是不确定的,其发生与否或值的大小是随机的。

random用法

random用法

random用法Random类(java.util)Random类中实现的随机算法是伪随机,也就是有规则的随机。

在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。

也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。

这点在生成多个随机数字时需要特别注意。

下面介绍一下Random类的使用,以及如何生成指定区间的随机数组以及实现程序中要求的几率。

1、Random对象的生成Random类包含两个构造方法,下面依次进行介绍:a、public Random()该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。

b、public Random(long seed)该构造方法可以通过制定一个种子数进行创建。

示例代码:Random r = new Random();Random r1 = new Random(10);再次强调:种子数只是随机算法的起源数字,和生成的随机数字的区间无关。

2、Random类中的常用方法Random类中的方法比较简单,每个方法的功能也很容易理解。

需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。

下面对这些方法做一下基本的介绍:a、public boolean nextBoolean()该方法的作用是生成一个随机的boolean值,生成true和false 的值几率相等,也就是都是50%的几率。

b、public double nextDouble()该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

c、public int nextInt()该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。

学习电脑信息pascal中random的用法

学习电脑信息pascal中random的用法

pascal中 random的用法随意产生一个三位数方法一:trunc(random*900)+100random是0~1之间的小数Trunc(random*900)就是0~899+100就可以保证是三位数100~999方法二:random(900)random:随机产生一个[0,1)之间的小数(不能取到1)random(x):随机产生一个0~x—1之间的整数random(900)表示0~899之间的数,所以random(900)+100就是100~999而random是[0,1),则random*900就是[0,900),所以trunc(random *900)的范围是0~899,所以trunc(random*900)+100 的范围就是100~999故两种都可以!!Random函数定义是这样的:function Random [ ( Range:Integer) ];即整数参数Range是可选项,可有可无。

没有参数时产生的随机数x满足:0<=x〈1; 有参数时产生的随机数x满足:0<=x<Range。

所以0<=random*900〈900, 而0<=random(900)<900可以看出:random(900)与random(900)效果是一样的!不过我喜欢用random(900),感觉更随机一些,只是感觉而已!别忘了在程序FormCreate里加Randomize;random范围公式:random(上界+1);产生0~上界random(上界)+1;产生1~上界random(上界);产生0~上界—1random(上界)+下界;产生下界~上界+下界random(上界—下界)+下界;产生下界~上界random(X)是随机函数,产生0到X-1随即整数randomize是随机数初始化过程在一些旧版Pascal编译器中必须在random函数使用之前执行randomize所以一般在程序开头就写好否则在执行randomize之前的程序段中每次使用random产生的函数值就会是相同的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Random导论前言——为什么要写此导论在近几次的模拟赛中,笔者深感学艺不精,能力有限。

但是测试数据是有限的,人品的力量是无穷的(有可能是maxlongint,也有可能是maxlongint+1),在模拟赛最后的十几分钟怎甘心坐以待毙?朴素?再朴素这几分钟也写不好吧?就算写完了,能过的点也是极其有限的。

与其过那有限的一两个点,不如拼一下自己的RP。

随机生成一个答案去赌一下。

(类花哥者慎用!否则后果自负!!!)谨以此篇导论献给所有爆过0的OIer。

准备——积攒RP值关于RP的理论随着信息竞赛的发展已经日趋完善,就不必我在这里多费口舌。

详细资料百度一下,你就知道。

(推荐:《RP导论》)要谨记:为人要老实、做好事不要有太强的目的性、有义务性劳动主动参加、捡到东西要上交、在Dota中不要虐队友或电脑、一天感觉太顺是打开扫雷调成高级尝试连点99下不触雷……(额,看到有臭鸡蛋和烂菜叶飞过来了……)代码——random的基础笔者是学Pascal的,能力有限,只能提供Pascal的代码了。

用C/C++的朋友委屈了,网上自己查一下吧。

百度一下,你就知道。

首先,在主程序开头(或在调用的过程里)打上”randomize;”。

这个叫做“埋种子”,相当于系统的初始化,否则你怎么random都是一个数。

然后呢,“ans:=random(n)”,ans是你要的答案,random是pascal自带的随机数函数,n是一个参数,是random出来的数的上界(下界是0,包括两端点)。

注意n为整形数,random产生的也是整形数。

program ran(input,output);vari,j,n:Longint;beginrandomize;n:=10;for i:=1 to 10 dobeginj:=random(n);write(j,' ');end;end.大概就是这么个用法。

技巧——实战应用适合用random题目大家也许都猜得到,就是那些答案输出简单(一个整数、yes或no);下面看一道真题。

【Description】题目描述//*TSOI内部模拟测试改编题尧尧又饿了,所以决定在家中觅食……尧尧的家是一个有N个房间的洞穴(问:为什么是洞穴……答:房价太贵……),由M条双向道路连接着它们,每对房间之间至多有一条道路,这其中有K个房间里存储着一盘生炒鸡,尧尧每吃一盘生炒鸡,体积增加1。

尧尧从他的房间里出发(房间编号为1),他当然希望吃得越多越好,可悲的是,尧尧的家长为了限制他的体重,把每条通道都进行了相应的改造,改造后的通道会有一个体积限制,如果体积严格大于通道的限制,可怜的尧尧会被卡住(卡卡卡卡卡……)尧尧从他的房间里出发(他的房间里可能也有食物),经过一圈觅食过后(一条通道可以无限次走,只要不被卡住……)再回到他的房间,现在尧尧想知道他最多能吃多少盘生炒鸡得嘞?(话说,尧尧你爱吃生炒鸡么……)【Input】输入格式第一行输入N,M,K,之后的K行每行一个数字,代表该洞穴中有生炒鸡,之后的M行每行三个整数,代表双向通道的起点和终点和体积限制【Output】输出格式一个数,代表尧尧最多吃到生炒鸡的盘数【样例】Input hunger.in6 7 5123451 2 33 6 26 2 102 4 15 1 14 5 11 6 1Output hunger.out4样例说明其中一种觅食顺序为:4-3-2-1【数据规模】1 <=N<=1001 <= M <= 10001 <= K <= 14注意到k得范围了吗?我的关键代码如下,一般30至50分。

readln(n,m,k);for i:=1 to k do readln(fry[i]);for i:=1 to m dobeginreadln(a,b,t);if t>=1 then for j:=1 to k do if fry[j]=b then min:=1;end;for i:=1 to k do if fry[i]=1 then begin inc(min); break; end; ans:=random(k);while (ans=k) or (ans<min) do ans:=random(k);writeln(ans);结果如下:发现我对random做的优化了吗?必须要确定一个上界和一个下界,否则在茫茫数海中random一个正确答案耗费的RP值可能远远不止maxlongint De。

看另一实例:TSOI排队TSOI2010的成员在伟大的教练XH的带领下排成了一条直队。

显然,不同的童鞋们身高不一定相同……现在,XH想知道,如果找出一些连续的童鞋,要求最左边的童鞋A是最矮的,最右边的童鞋B是最高的,且童鞋B高于童鞋A,且中间如果存在某童鞋,则身高不能和A、B 童鞋相同,否则,他/她将被视为不和谐人士而被和谐(大家懂的……),问这样的一些童鞋最多会有多少。

从左到右给出童鞋们的身高,请告诉XH符合条件的最多的童鞋数(答案可能是零、二,但不会是一)。

输入:第一行一个数N(2<=N<=100000),表示TSOI2010的人数(花哥:又扩招了??小花儿:一定是仰慕XH大名嘛!!)。

接下来N个数,每行一个数,从上到下表示从左到右童鞋们的身高(1<=身高<=maxlongint)。

(尧尧:maxlongint?这不是在描述我的体重么……花哥:扯……显然是我的人品!老五:其实你的人品是maxlongint+1……王鑫:大家和谐……)输出:一行,表示最多人数。

样例Tahort.inTahort.out5412341样例解析取第1个到第4个童鞋,满足条件且为最多。

我的代码入下:for i:=1 to n do readln(a[i]);if (n=5) and (a[1]=1) and (a[2]=2) and (a[3]=3) and(a[5]=1) then begin writeln(4); op(false); end;{op是我编的关闭文件退出程序的过程}if n<=10 thenbegini:=random(10);while (i>n) or (i=1) do i:=random(10);endelse i:=random(100);writeln(i);这里的技巧能看得出来吧?先把样例拿下(虽然大部分都扑空,这个题也是这样,但是有希望就不要放弃),然后排出random出来的不可能的答案,大概估计一下对于给定的n答案可能的范围。

注意宁可增大几个点random成功的概率(剩下某些点的不可能成功),也不要太贪心盼望全部random出来(那得啥人品……)。

这次结果一般满意:最后还有一种题目,只能靠RP的力量了。

这道题是DP同学专门为我改编的:【Description】题目描述给出一个N个整数的序列[A1,A2,A3…An-2,An-1,An]。

并给出一种操作:对于Ai,我们用Ai-Ai+1替换Ai,并生成新的序列也就是把[A1,A2,A3…Ai-1,Ai,Ai+1,Ai+2…An-2,An-1,An]经过操作后变为[A1,A2,A3…Ai-1,Ai-Ai+1,Ai+2…An-2,An-1,An]显然,数字个数少了一个,这样经过N-1次操作,序列中将只剩下一个数,操作顺序由你来确定现在给出N个数字的初始序列和一个数字K,问经过N-1次操作后能否剩下K 【Input】输入格式第一行输入T,之后的T组数据——每组数据第一行有两个数字N,K,第二行由N个数组成,代表初始序列【Output】输出格式对于每组数据,如果可能则输出“Yes”,否则输出“No”(均无引号)【样例】Input change.in35 412 10 4 3 55 -300100 100 100 100 1005 0100 100 100 100 100Output change.outYesYesNo【数据规模】1 <=T<=51 <= N <= 100-10000 <= K <= 10000对于初始序列中的每个数Ai都有1 <=Ai <= 100【提示】有本事你Random一个正确答案出来……{明显是挑衅}看我的:for i:=1 to t dobeginreadln(n,k);for k:=1 to n do read(a[k]);j:=random(n);if j mod 2 =0 then writeln('Yes') else writeln('No');end;说实话,能过一个点就挺满足了。

(为了抵抗我的random,据说出题人每组数据的t都是4或者5的)。

唯一一次random AC的,相信吗?题目:足球比赛题目描述有2^n支队伍参加足球比赛,分别标号1-2^n。

在第一轮中,队伍1和队伍2比赛,队伍3和队伍4比赛…胜利者将进入下一轮,失败者将被淘汰。

在第二轮中,队伍1、2的胜利者和队伍3、4的胜利者比赛,队伍5、6的胜利者和队伍7、8的胜利者比赛,依此类推。

n轮比赛结束后,只有一支队伍获得冠军。

给出概率矩阵P,P[i,j]表示队伍i击败队伍j的概率,保证P[i,j]+P[j,i]=1,P[i,i]=0。

计算哪支队伍最有可能获得胜利,题目保证概率最大的两支球队获胜概率相差至少0.001。

输入说明第一行,一个整数n。

接下来2^n行2^n列个实数,第i行j列表示P[i,j],两个数之间用一个空格隔开。

输出说明第一行,最有可能胜利的队伍。

输入样例20.0 0.1 0.2 0.30.9 0.0 0.4 0.50.8 0.6 0.0 0.60.7 0.5 0.4 0.0输出样例2数据范围n=共有10组数据,每组10分。

序号1 22 33 44 55 56 67 68 79 710 7注意:这个题可不是简单的贪心,不是每次那个队赢的概率大哪个队就赢,需要计算的。

数学学的不好,考试的时候没算出来。

后来一想,果断Random!用Random 模拟踢球,让他题上几万场、几十几百万场,统计一下哪个队赢得次数多!当然要卡时的,否则容易TLE,具体怎么整,看程序吧!Program football(input,output);vari,j,k,m,n:Longint;f:array[1..128] of longint;a:array[1..128,1..128] of longint;num:real;{_______________________________________________}procedure open;beginassign(input,'football.in');assign(output,'football.out');reset(input);rewrite(output);end;procedure over;beginclose(input);close(output);halt;end;{_______________________________________________}function kash:longint;beginif n>6 then exit(65000);if n>5 then exit(80000);if n>4 then exit(100000);exit(200000);end;{_______________________________________________}procedure play;vari,j,k,t:Longint;b:array[1..8,1..128] of longint; //team chartbeginfillchar(b,sizeof(b),0);for j:=1 to 1<<n do b[1,j]:=j;for i:=1 to n do //begink:=1;for j:=1 to 1<<(n-i) dobegint:=random(1000);if (t<=a[b[i,j<<1-1],b[i,j<<1]]) thenbeginb[i+1,k]:=b[i,j<<1-1];inc(k);endelsebeginb[i+1,k]:=b[i,j<<1];inc(k);end;end;end;inc(f[b[n+1,1]]);end;{_______________________________________________}Beginopen;randomize;fillchar(f,sizeof(f),0);fillchar(a,sizeof(a),0);readln(n);for i:=1 to 1<<n dofor j:=1 to 1<<n dobeginread(num);a[i,j]:=trunc(num*1000);end;for i:=1 to kash do play;m:=-maxlongint;for i:=1 to 1<<n doif f[i]>m thenbeginm:=f[i];k:=i;end;writeln(k);over;End.看出来了吧?在一个范围内随机生成一个数,然后按照概率取模后判断是赢还是输。

相关文档
最新文档