c语言怎么生成随机数?

发布网友 发布时间:2022-04-20 11:49

我来回答

5个回答

热心网友 时间:2023-09-12 19:49

假设要生成的随机数是大于等于20且小于等于100的整数

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void main() { int a,b,x;
  a=20; b=100;
  srand((unsigned int)time(NULL)); //用当前时间生成一个随机数种子
  x=rand()%(b-a+1)+a;
  printf("得到一个随机数:%d\n",x);
}

热心网友 时间:2023-09-12 19:49

生成1~13的随机数,随机数序列中没有重复字数
#include <stdio.h>
#include <stdlib.h> // 包含rand()函数说明
#include <time.h>
#define N 13
void main( void )
{ inti, j, num[N], tmp; //用当前时间种子重置随机数生成器,使每次运行生成不同的随机数
srand((unsigned)time( NULL ) );
for(i=0;i<N;i++) // 生成N个数
{
while(1) //生成1个数
{
tmp=N *rand()/ RAND_MAX +1; // 产生随机数
for(j=0;j<i;j++) //判断是否重复
if( tmp==num[j] )
break;
if(j==i) // 找到1个数
{
num[i]=tmp; //入队列
break; // 开始下一轮
}
} printf("%3d\t",num[i]); //打印结果
}
}
如果可以重复,去掉内循环,直接将生成的随机数存入数组。

热心网友 时间:2023-09-12 19:50

srand(int)来设种子,然后每次rand()返回一个随机数。

注意要包含#include <stdlib.h>头文件,因为用到了srand函数

#include <time.h> //用到了time函数 

int main()
{
   srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样
 
   for (int i=0; i<10; i++)
   {
     int number = rand() % 12 + 1;  //产生1-13的随机数
     printf("%d\n", number);
   }
   
   return 0;
}

热心网友 时间:2023-09-12 19:50

产生一定范围随机数的通用表示公式

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;

要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;

要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;

通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。

要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。

要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

热心网友 时间:2023-09-12 19:51

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int func()
{
return rand() % 13 + 1;//rand()产生0到32767的随机数,模13就得到0到12的随机数,加1就是1到13的随机数
}

int main()
{
srand((unsigned)time(0));//这个也是关键,是放入随机数种子,通常都是放系统当前时间的。
for (int i = 0;i<10;i++)
{
printf("random : %d\n", func());
}
return 0;
}

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com