c语言,产生随机数

产生随机数的函数是什么?怎么用?
举例:随机产生30个数(要求随机数介于0-20)
麻烦把例子写一下
谢谢

用rand函数可以产生小于32767的随机数,如果需要的随机数范围超过了32767,可以用rand()*rand()来产生,举例如下:

产生0~32767范围内的随机数:int num = rand();
产生0-20范围内的随机数:int num = rand()%20;
产生0~10000000范围内的随机数:int num = rand()*rand()%10000000;

注:需要包含头文件<stdlib.h>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-24
/***********************
作者:dongyu
功能:生成随机数
***********************/
#include
<stdio.h>
#include
<conio.h>
main()
{
int
i,n,sum=0,mark=1;
srand(time(NULL));//设置随机种子
while(mark==1)//如超出随机数总和的范围,则重新生成随机数
{
sum=0;//将总和归零
system("cls");//清屏
printf("符合条件的200个随机数为:");//打印一个回车
for(i=0;i<200;i++)//循环200次,生成200个随机数
{
if(i%10==0)
printf("\n");
n=rand()%101;//随机数在1-100之间
sum=sum+n;//将生成的随机数累加,存在sum变量中
printf("%d
",n);//输出每次循环生成的随机数
}
if(sum==10000)//判断是否等于确定的随机数总和
{
mark=0;//如果不等,变量mark为0
}
}
printf("\n%d",sum);//输出总和
system("pause");//使程序在DOS窗口下暂停,可注释掉
}
运行程序后,请耐心等待,因为200个100以内的随机数的和,不是很容易就等于确定的总和数(10000)的!!
第2个回答  2020-01-24
一楼的感觉第二个数的产生过于麻烦
二楼的不能用int型,因为楼主的要求是1000000内,可能就是999999,int不够用
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#define
RAND_MAX
1000000
void
main()
{
long
num1,num2;
time_t
t;
srand((unsigned)
time(&t));/*用时间初始化随机函数*/
int
T;
scanf("%d",&T);
for(int
i=0;i<2*T;i++)
{
num1=rand()%1000000;//产生1000000内的第一个随机数
num2=rand()%num1;//产生num1内的第二个随机数
printf("%ld\t%ld\n",num1,num2);
}
getchar();
getchar();
}
第3个回答  2008-12-17
随即生成30个0-20的随机数,并放在了arr数组里
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main( int argc, char * argv[] )
{
int arr[30], i;
srand(time(NULL));
for(i=0;i<30;i++)
{
arr[i] = rand()%20;
}
printf("rand number between 0 and 20:\n");
for(i=0;i<30;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
第4个回答  2008-12-16
#include <iostream>
#include <ctime>
using namespace std;
void main()
{
srand(time(NULL));
int i=20;
while (i--)
{
int num=(int)((float)rand()/RAND_MAX*21);
cout<<num<<endl;
}
system("pause");
}