怎么用C语言生成随机数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用C语言生成随机数相关的知识,希望对你有一定的参考价值。

想生成1~13的随机数,详细点谢谢,最好带上一段完整的代码

假设要生成的随机数是大于等于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);

参考技术A 生成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]); //打印结果


如果可以重复,去掉内循环,直接将生成的随机数存入数组。
参考技术B

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;

本回答被提问者采纳
参考技术C 产生一定范围随机数的通用表示公式

要取得[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)。
参考技术D #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;

以上是关于怎么用C语言生成随机数的主要内容,如果未能解决你的问题,请参考以下文章

用c语言怎么生成20个[0,20]不相等的随机数?

怎样用c语言产生0-100随机数?求助高手

怎么用c语言产生0~1的随机数,水平较差,需要详细一点的程序,急谢谢!

C语言写一个两位的随机数程序

怎么用R语言生成0-1之间的随机数?

怎么用R语言生成0-1之间的随机数?