随机数与随机分组
在C语⾔中通常⽤srand()与rand()函数来去随机数;
在c语⾔⾥⾯,两个函数包含在
srand函数是随机数发⽣器的初始化函数。
原型:voidsrand(unsigneded);
rand函数⽤来产⽣随机数,当然是伪随机数。
原型:intrand(void)
ed的作⽤:srand函数的作⽤是根据参数ed,设置⼀个随机起始点,⽽rand函数根据这个起始点,产⽣随机数序列。默认的随机种
⼦为1。如果随机种⼦⼀样,rand函数所产⽣的随机序列也⼀样。
因此,为使每次程序运⾏都能产⽣不同的随机序列,每次都应产⽣⼀个不同的种⼦参数。
说明:
因为rand的内部实现是⽤线性同余法做的,它不是真的随机数,只不过是因为其周期特别长,所以有⼀定的范围⾥可看成是随机
的,rand()会返回⼀随机数值,范围在0⾄RAND_MAX间。在调⽤此函数产⽣随机数前,必须先利⽤srand()设好随机数种⼦,如果未设
随机数种⼦,rand()在调⽤时会⾃动设随机数种⼦为1。rand()产⽣的是假随机数字,每次执⾏时是相同的。若要不同,以不同的值来初始化
它.初始化的函数就是srand()。
返回值:
返回0⾄RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若⽤unsigned
int双字节是65535,四字节是4294967295的整数范围。
0~RAND_MAX每个数字被选中的机率是相同的。
技巧1:
若要产⽣指定范围内的随机整数例如[a,b)则可以使⽤:a+rand()%(b-a)表达式,也即为要产⽣[a,b)范围内的随机整数,可以使⽤
a+rand()%n表达式,其中a为起始值,n为随机整数取值范围的⼤⼩即为b-a
技巧2:
如要产⽣随机⼩数,直接将产⽣的随机整数除以相应次数的10,例:若产⽣3位的随机⼩数,则先产⽣随机整数,然后除以1000即可
实例:
产⽣1-100以内的随机数
#include
#include
#include
intmain()
{
srand((unsigned)time(NULL));
printf("%dn",rand()%100);
return0;
}
随机分组
#include
#include
#include
#include
intmain()
{
constchar*name[]={
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29",
"30",
"31",
"32",
"33",
"34",
"35",
"36",
"37",
};
intlen=sizeof(name)/sizeof(name[0]);
inti;
intlast=len-1;
srand((unsignedint)time(NULL));//⽤法固定与rand()⼀起产⽣⼀个随机数
for(i=0;i
{
intindex=rand()%(len);
//交换
constchar*tmp=name[index];
name[index]=name[last];
name[last]=tmp;
last--;
}
//打印
for(i=0;i
{
if(i%4==0)
printf("n");
printf("%8s",name[i]);
}
}
printf("n");
return0;
}
本文发布于:2023-03-11 21:29:23,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678541364218943.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:随分.doc
本文 PDF 下载地址:随分.pdf
留言与评论(共有 0 条评论) |