关于随机数

来源:互联网 发布:知天下邀请码 编辑:程序博客网 时间:2024/05/16 05:59

 昨天去网易笔试,最后一道题实在没有时间写了,大概题目这样的:

床前明月_ ,疑是地_霜,举头望_月,低头思故_。
A.光 上 明 乡
B.上 明 乡 光
C.乡 上 明 光
D.光 乡 上 明

请你编写一函数,随机扣掉每一句的一个字,然后生成3个错误选项,一个正确选项,选项的字必须是诗里所缺的字。请写出数据结构,算法。

好像要用到随机函数rand(),srand(),查了一下他们的用法:

srand()
是用来初始化随机种子数的,因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,式子如下 rand = rand*const_1 + c_var;srand函数就是给它的第一个rand值。
用 int x = rand() % 100;来生成 0 到 100 之间的随机数这种方法是不或取的,比较好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))  // 产生一个0到n之间的随机数

RAND_MAX定义在stdlib.h,其值为2147483647

此范例未设随机数种子,并不是真正意义上的随机数:

#include <iostream.h>/*产生1~~~10之间的随机数*/
#include <stdlib.h>
#include <time.h>

main()
{
int i,j;
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
cout<<j<<endl;
}
}

 

srand(设置随机数种子)
相关函数
rand

表头文件
#include<stdlib.h>

定义函数
void srand (unsigned int seed);

函数说明
srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

范例
/* 产生介于1 到10 间的随机数值,此范例与执行结果可与rand()参照*/
#include<time.h>
#include<stdlib.h>
main()
{
int i,j;
srand((int)time(0));
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf(" %d ",j);
}
}

原创粉丝点击