‘壹’ c语言如何srand和rand函数产生10个1-100内的随机数知道
先用srand函数设置一个种子,一般为当前时间,然后使用rand函数产生随机数,如产生a~b的随机数使用表达式rand()%(b-a+1)+a。
注意:srand函数在头文件#include
<stdlib.h>中。
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a[10]/*用于保存10个产生的随机数*/, i;
srand((unsigned int)time(NULL));//设置当前时间为种子
for (i = 0; i < 10; ++i){
a[i] = rand()%100+1;//产生1~100的随机数
}
//打印生成的随机数
for (i = 0; i < 10; ++i){
printf ("%d ", a[i]);
}
printf ("\n");
return 0;
}
‘贰’ C语言rand()函数产生的最大随机数是多少
最大随机数因平台不同而不同
在C头文件中定义有RAND_MAX这个宏
在stdlib.h里面
你可以查看这个文件 或者打印
#include<stdio.h>
#include<stdlib.h>
intmain()
{
printf("RAND_MAX=%d ",RAND_MAX);
return0;
}
我用的是gcc 4.8.4 得到的结果是2147483647
‘叁’ C语言中srand函数与rand函数产生随机数的问题
这里改一下:printf ("%d\n", rand()%32767+1);。因为1个整数除以32767的余数肯定是在0~32766之间,加上1便可以保证结果在1~32767之间。
‘肆’ 关于用C语言库函数rand()生成随机数的问题
rand()生成[0,RAND_MAX]之间的随机数,
生成[a, b]范围内的浮点随机数,a + rand() * 1.0 * (b - a) / RAN_MAX
整数随机数: a + rand() / (RAN_MAX / (b - a) + 1)
rand()/RAND_MAX - 2 是错的,浮点数只会得到[-2, -1],整数只会得到-2和-1两个数。
‘伍’ C语言rand函数产生的最大随机数是多少
最大32767 (2^16-1)。
系统里的随机数是利用初等数论中的同余定理来实现的.
整数rand的原理是:
y=ax+b(mod n)其中,n一般是一个很大的素数,几万。
a也是大素数。而且a,b,n都是常数。所以rand的产生决定于x,
他被称为seed。
每一个seed都是上一次产生的y的函数。这样,如果直接取seed=y的话,
虽然产生的rand之间相关性甚小,但只要知道某个y,就能推知以后的rand。
为避免这种情况,一般取seed为y和当时计算机的时间的函数,如seed=y+t
比如VC中对于rand()函数是如下实现的.
int __cdecl rand (void)
{
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
}
‘陆’ C语言中产生随机数的函数是什么
rand函数也是调用dos的时钟,进行的伪随机函数.
你也可以使用时钟来模拟随机函数.
可以试用gettime这个函数:
long int MyRand(int x)
{
struct time t1,t2,t3;
gettime(&t1);
int y1=t1.ti_hund;//取1/100s作为基数
gettime(&t2);
int y2=t2.ti_hund;//取1/100s作为基数
gettime(&t3);
int y3=t3.ti_hund;//取1/100s作为基数
return y1*y2*y3;//产生的随机数0~99*99*99
}
‘柒’ C语言如何用rand函数产生4个不重复的随机数啊
可以将生成的随机数放入数组中,每次遍历数组,有相同的重新生成随机数。知道生成4个即退出循环。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
intnum[4],cnt=0,n;
srand(clock());//设置随机数种子
while(cnt<4)
{
n=rand()%4;//生成4以内随机数,这样更利于测试
for(inti=0;i<cnt;i++)
if(num[i]==n)//遍历数组,有相同的重新生成随机数
continue;
num[cnt++]=n;
}
for(inti=0;i<cnt;i++)//打印随机数数组
printf("%d",num[i]);
return0;
}
‘捌’ 关于C语言中rand函数的一个简单问题—rand函数产生随机数的范围是
rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数 time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒,返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。
‘玖’ C语言如何srand和rand函数产生10个1-100内的随机数
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
‘拾’ c语言rand怎么随机产生浮点型数
#include<stdlib.h>
#include<time.h>
#include<iostream.h>
#define MAX_RANDOM 1000//这个是产生随机数的最大值,但是取浮点数,所以要除去的
#define NUM 2500
double random(double a,double b)//这个是产生随机数函数,由于库函数功能有限,所以要自己封装一下
{
return(rand()%(int)((b-a)*MAX_RANDOM))/(double)MAX_RANDOM+a;
}
void main()
{
double Dran[NUM+(NUM-1)*4];
double ran[(NUM-1)*4];
double a,b;
int k=0;
srand((unsigned)time(NULL));//这个是设定随机数的种子数,由于种子数相同产生的随机数相同,所以取时间做种子
cout<<"***********************************亲体**************************"<<endl;
for(int i=0;i<NUM+(NUM-1)*4;i=i+5)//获得了亲体
{
Dran<i>=random(10,20);
cout<<Dran<i><<"";
}
/*
cout<<"***********************************后代**************************"<<endl;
//Dran里面是装的亲代和后代一起的,ran里面只是装的后代
for(i=0;i<NUM+(NUM-1)*4-1;i=i+5)
{
a=Dran<i>;
b=Dran[i+5];
for(int j=1;j<=4;j++)
{
Dran[i+j]=random(a,b);
ran[k]=Dran[i+j];
cout<<ran[k]<<"";
k++;
}
}
*/
}
(rand()%(int)((b-a)*MAX_RANDOM))/(double)MAX_RANDOM+a这个产生浮点数.
(10)c语言rand函数每秒生成随机数扩展阅读:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。